Changeset 9183130


Ignore:
Timestamp:
05/21/14 08:13:12 (3 months ago)
Author:
yurkis <yurkis@…>
Branches:
master, releng/10.0.2
Children:
98abbb1
Parents:
9d2b981
Message:

Control panel-next: very first UI implementation

Location:
src-qt4/pc-controlpanel-next
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/pc-controlpanel-next/backend/cp-item.cpp

    r9d2b981 r9183130  
    4848__string_constant KEYWORDS_FIELD= "Keywords"; 
    4949 
    50 const QStringList SU_NAMES = QStringList()<<QStrinui->softwareLWg("pc-su ")<<QString("kdesu ")<<QString("gtksu ")<<QString("sudo ")<<QString("gksu "); 
    51  
    52 const QString DEFAULT_ICON_LOCATION = PREFIX + "/share/pcbsd/pc-controlpanel/icons/"; 
     50const QStringList SU_NAMES = QStringList()<<QString("pc-su ")<<QString("kdesu ")<<QString("gtksu ")<<QString("sudo ")<<QString("gksu "); 
     51 
     52const QString DEFAULT_ICON_LOCATION = "/usr/local/share/pcbsd/pc-controlpanel/icons/"; 
    5353 
    5454#define OXYGEN_THEME_PATH "/usr/local/share/icons/oxygen/" 
     
    7373CControlPanelItem::CControlPanelItem() 
    7474{ 
    75     misValid = false; 
     75 
    7676} 
    7777 
     
    188188    mIconFile=  Reader.value("Icon").toString(); 
    189189 
    190     if (mIconFile.length()) 
    191     { 
    192         mIcon = QIcon(mIconFile); 
    193         if (!mIcon.availableSizes().size()) 
    194         { 
    195             //if icon loading failed (from absolute path) try to load icon 
    196             // from theme 
    197             mIcon = QIcon::fromTheme(mIconFile); 
    198         } 
    199         if (!mIcon.availableSizes().size()) 
    200         { 
    201             //if icon loading failed try to load one of default icons 
    202             QString FileName = QString(DEFAULT_ICON_LOCATION) + mIconFile; 
    203             mIcon = QIcon(FileName); 
    204         } 
    205         // try to find icons in some custom icon search paths 
    206         if (!mIcon.availableSizes().size() && (mIconFile.indexOf("/") == -1)) 
    207         { 
    208             QString icon_name = (mIconFile.indexOf(".")>0)?mIconFile:mIconFile + ".png"; 
    209             for (int i=0; i<ICON_SEARCH_PASS_SIZE; i++) 
    210             { 
    211                 mIcon = QIcon(ICON_SEARCH_PATH[i] + icon_name); 
    212                 if (mIcon.availableSizes().size()) 
    213                     break; 
    214             } 
    215         } 
    216         if (!mIcon.availableSizes().size()) 
    217         { 
    218             // And finally set default icon 
    219             mIcon = QIcon(QString(DEFAULT_ICON_LOCATION) + DEFAULT_ICON); 
    220         } 
    221     }//if got Icon field 
    222     else 
    223     { 
    224         mIcon = QIcon(QString(DEFAULT_ICON_LOCATION) + DEFAULT_ICON); 
    225     }//If Icon field is empty 
    226  
    227190 
    228191    //----------------- Get TryMessage extended field 
     
    245208 
    246209/////////////////////////////////////////////////////////////////////////////// 
     210QIcon CControlPanelItem::icon() 
     211{ 
     212    QIcon RetVal; 
     213    if (mIconFile.length()) 
     214    { 
     215        RetVal = QIcon(mIconFile); 
     216        if (!RetVal.availableSizes().size()) 
     217        { 
     218            //if icon loading failed (from absolute path) try to load icon 
     219            // from theme 
     220            RetVal = QIcon::fromTheme(mIconFile); 
     221        } 
     222        if (!RetVal.availableSizes().size()) 
     223        { 
     224            //if icon loading failed try to load one of default icons 
     225            QString FileName = QString(DEFAULT_ICON_LOCATION) + mIconFile; 
     226            qDebug()<<FileName; 
     227            RetVal = QIcon(FileName); 
     228        } 
     229        // try to find icons in some custom icon search paths 
     230        if (!RetVal.availableSizes().size() && (mIconFile.indexOf("/") == -1)) 
     231        { 
     232            QString icon_name = (mIconFile.indexOf(".")>0)?mIconFile:mIconFile + ".png"; 
     233            for (int i=0; i<ICON_SEARCH_PASS_SIZE; i++) 
     234            { 
     235                RetVal = QIcon(ICON_SEARCH_PATH[i] + icon_name); 
     236                if (RetVal.availableSizes().size()) 
     237                    break; 
     238            } 
     239        } 
     240        if (!RetVal.availableSizes().size()) 
     241        { 
     242            // And finally set default icon 
     243            RetVal = QIcon(QString(DEFAULT_ICON_LOCATION) + DEFAULT_ICON); 
     244        } 
     245    }//if got Icon field 
     246    else 
     247    { 
     248        RetVal = QIcon(QString(DEFAULT_ICON_LOCATION) + DEFAULT_ICON); 
     249    }//If Icon field is empty 
     250 
     251    return RetVal; 
     252} 
     253 
     254/////////////////////////////////////////////////////////////////////////////// 
     255QIcon CControlPanelItem::displayIcon() 
     256{ 
     257    //TODO: implement 'root access mark' 
     258    return icon(); 
     259} 
     260 
     261/////////////////////////////////////////////////////////////////////////////// 
    247262QString CControlPanelItem::getLocalizedField(const QSettings &Reader, const QString &FieldName) 
    248263{ 
  • src-qt4/pc-controlpanel-next/backend/cp-item.h

    r7655d51e r9183130  
    7676    QStringList mNotShowIn; 
    7777 
    78     QIcon       mIcon; 
    79  
    8078protected: 
    8179    QString getLocalizedField(const QSettings& Reader, 
  • src-qt4/pc-controlpanel-next/backend/cp-itemgroup.cpp

    r7655d51e r9183130  
    8686    if (item_allowed_de.size()) 
    8787    { 
    88         for (int j=0 ;j<item_allowed_de.size(); j++) 
     88        for (int i=0 ;i<item_allowed_de.size(); i++) 
    8989        { 
    90             if (item_allowed_de[j].toLower().trimmed() == current_de) 
     90            for (int j=0; j<enabled_de.size(); j++) 
    9191            { 
    92                 return true; 
     92                if (item_allowed_de[i].toLower().trimmed() == enabled_de[j].toLower().trimmed()) 
     93                { 
     94                    return true; 
     95                } 
    9396            } 
    9497        } 
     
    99102    if (item_disallowed_de.size()) 
    100103    { 
    101         for (int j=0 ;j<item_disallowed_de.size(); j++) 
     104        for (int i=0 ;i<item_disallowed_de.size(); i++) 
    102105        { 
    103             if (item_disallowed_de[j].toLower().trimmed() == current_de) 
     106            for (int j=0; j<enabled_de.size(); j++) 
    104107            { 
    105                 return false; 
     108                if (item_disallowed_de[i].toLower().trimmed() == enabled_de[j].toLower().trimmed()) 
     109                { 
     110                    return false; 
     111                } 
    106112            } 
    107         }//for all disallowed de 
     113        }//for all item's disallowed de 
    108114    }//if disallowed de list is not empty 
    109115    return true; 
     
    122128    read(); 
    123129    emit itemsReadyAssync(); 
     130    exec(); 
    124131} 
  • src-qt4/pc-controlpanel-next/backend/cp-itemgroup.h

    r7655d51e r9183130  
    5959    bool checkItemFilter(const CControlPanelItem& item, QString filter); 
    6060 
    61 protected: 
     61private: 
    6262    void run(); 
    6363}; 
  • src-qt4/pc-controlpanel-next/mainwindow.cpp

    r9d2b981 r9183130  
     1 
     2#include <QAction> 
     3#include <QListWidgetItem> 
     4 
     5#include "pcbsd-utils.h" 
     6 
    17#include "mainwindow.h" 
    28#include "ui_mainwindow.h" 
     
    713#define ITEMS_PREFIX "/usr/local/share/pcbsd/pc-controlpanel/items/" 
    814 
    9 typedef struct _SItemsGroup 
    10 { 
    11     CItemGroup*      mItemGroup; 
    12     QAutoExpandList* mListWidget; 
    13     QCheckBox*       mGroupNameWidget; 
    14     _SItemsGroup(CItemGroup* pbackend=NULL, QAutoExpandList* lw=NULL,QCheckBox* capt=NULL) 
    15     { 
    16         mItemGroup = pbackend; mListWidget= lw; mGroupNameWidget= capt; 
    17     } 
    18 }SItemsGroup; 
    19  
    2015CItemGroup softwareItems (ITEMS_PREFIX"software", "Software and updates"); 
    21 CItemGroup systemItems (ITEMS_PREFIX"system", "System"); 
    22  
    23 SItemsGroup ItemsGroups[4]; 
    24  
     16CItemGroup systemItems (ITEMS_PREFIX"system", "System management"); 
     17CItemGroup hardwareItems (ITEMS_PREFIX"hardware", "Hardware"); 
     18CItemGroup networkingItems (ITEMS_PREFIX"network", "Hardware"); 
     19CItemGroup deItems (ITEMS_PREFIX"de", "Desktop environment"); 
     20CItemGroup toolsItems (ITEMS_PREFIX"tools", "Tools"); 
     21 
     22//! Structure that holds info about desktop environment related UI resources 
     23typedef struct _SDEEntry 
     24{ 
     25    QString mDisplayName; 
     26    QString mIconPath; 
     27    QAction* mAction; 
     28    QStringList mDENames; 
     29    bool     misNotCheckInstalled; 
     30}SDEEntry; 
     31 
     32SDEEntry DEEntries[]=\ 
     33{{"System only", ":/images/system_only.png", NULL, QStringList()<<"---pcbsd---", true}, 
     34 {"All", ":/images/all_desktops.png", NULL, QStringList(), true}, 
     35 {"KDE", ":/images/kde.png", NULL, QStringList()<<"KDE", false}, 
     36 {"Gnome",":/images/gnome.png", NULL, QStringList()<<"Gnome", false}, 
     37 {"Cinnamon",":/images/cinnamon.png", NULL, QStringList()<<"Cinnamon", false}, 
     38 {"MATE",":/images/mate.png", NULL, QStringList()<<"Mate", false}, 
     39 {"XFCE",":/images/xfce.png", NULL, QStringList()<<"XFCE", false}, 
     40 {"LXDE",":/images/lxde.png", NULL, QStringList()<<"lxde", false}, 
     41 {"Lumina",":/images/lumina.png", NULL, QStringList()<<"Lumina", false}, 
     42}; 
     43const int DEntriesSize = sizeof(DEEntries)/sizeof(SDEEntry); 
     44 
     45/////////////////////////////////////////////////////////////////////////////// 
    2546MainWindow::MainWindow(QWidget *parent) : 
    2647    QMainWindow(parent), 
     
    2950    ui->setupUi(this); 
    3051 
    31 } 
    32  
     52    setupDEChooser(); 
     53    setupGroups(); 
     54} 
     55 
     56/////////////////////////////////////////////////////////////////////////////// 
    3357MainWindow::~MainWindow() 
    3458{ 
     
    3660} 
    3761 
     62/////////////////////////////////////////////////////////////////////////////// 
    3863void MainWindow::setupDEChooser() 
    3964{ 
    40  
    41 } 
    42  
     65    // Create actions 
     66    QVector<pcbsd::DesktopEnvironmentInfo> installedDEs = pcbsd::Utils::installedDesktops(); 
     67 
     68    QMenu* DEChoiseMenu = new QMenu("", this); 
     69 
     70    for (int i=0; i<DEntriesSize; i++) 
     71    { 
     72        if (DEEntries[i].misNotCheckInstalled) 
     73        { 
     74            // This is special menu entry. We dont need to check installed desktops 
     75            QAction* action = new QAction(QIcon(DEEntries[i].mIconPath), DEEntries[i].mDisplayName, this); 
     76            DEEntries[i].mAction = action; 
     77            continue; 
     78        } 
     79        for (int j=0; j<DEEntries[i].mDENames.size(); j++) 
     80        { 
     81            for (int k=0; k<installedDEs.size(); k++) 
     82            { 
     83                if (DEEntries[i].mDENames[j].toLower().trimmed() == installedDEs[k].Name.toLower().trimmed()) 
     84                { 
     85                    //----if DE is isntalled 
     86                    QString DisplayName= DEEntries[i].mDisplayName; 
     87                    //If current DE 
     88                    if (installedDEs[k].isActive) 
     89                    { 
     90                        DisplayName+=QString(" ")+tr("(Current)"); 
     91                        mEnabledDEs<<installedDEs[k].Name; 
     92                    } 
     93                    QAction* action = new QAction(QIcon(DEEntries[i].mIconPath), DisplayName, this); 
     94                    DEEntries[i].mAction = action; 
     95                } 
     96            }//for all installed DEs 
     97        }//for all DEs inside UI desktop entry 
     98    }//for all desktop entries 
     99    ui->DEChooserButton->setMenu(DEChoiseMenu); 
     100 
     101    //----Add actions to menu ad connect signals 
     102    for (int i=0; i<DEntriesSize; i++) 
     103    { 
     104        if (!DEEntries[i].mAction) 
     105            continue; 
     106 
     107        DEChoiseMenu->addAction(DEEntries[i].mAction); 
     108 
     109        connect(DEEntries[i].mAction, SIGNAL(triggered(bool)), this, SLOT(slotDEChooserActionTriggered(bool))); 
     110    }//for all DE entries 
     111} 
     112 
     113/////////////////////////////////////////////////////////////////////////////// 
    43114void MainWindow::setupGroups() 
    44115{ 
    45     ItemsGroups[0]= SItemsGroup(&softwareItems, ui->softwareLW, ui->softwareGroupName); 
    46 } 
     116    mItemGropus[0]= SUIItemsGroup(&softwareItems, ui->softwareLW, ui->softwareGroupName); 
     117    mItemGropus[1]= SUIItemsGroup(&systemItems, ui->systemLW, ui->systemGroupName); 
     118    mItemGropus[2]= SUIItemsGroup(&hardwareItems, ui->hardwareLW, ui->hardwareGroupName); 
     119    mItemGropus[3]= SUIItemsGroup(&networkingItems, ui->networkingLW, ui->networkingGroupName); 
     120    mItemGropus[4]= SUIItemsGroup(&deItems, ui->deLW, ui->deGroupName); 
     121    mItemGropus[5]= SUIItemsGroup(&toolsItems, ui->toolsLW, ui->toolsGroupName); 
     122 
     123    for(int i=0; i<6; i++) 
     124    { 
     125        QAutoExpandList* widget = mItemGropus[i].mListWidget; 
     126        if (!widget) 
     127            continue; 
     128        widget->setIconSize(QSize(32, 32)); 
     129        widget->setViewMode(QListView::IconMode); 
     130        //widget->setViewMode(QListView::ListMode); 
     131        widget->setWordWrap(true); 
     132        widget->setFrameStyle(QFrame::NoFrame); 
     133        widget->setSortingEnabled(true); 
     134    } 
     135 
     136    //Connect signals and read all items 
     137    for (int i=0; i<6; i++) 
     138    { 
     139        if (!mItemGropus[i].mItemGroup) 
     140            continue; 
     141 
     142        connect(mItemGropus[i].mItemGroup, SIGNAL(itemsReady()), this, SLOT(slotItemsReady()), Qt::QueuedConnection); 
     143        connect(mItemGropus[i].mGroupNameWidget, SIGNAL(stateChanged(int)), this, SLOT(slotGropTextStateChanged(int))); 
     144 
     145        mItemGropus[i].mItemGroup->readAssync(); 
     146    } 
     147} 
     148 
     149/////////////////////////////////////////////////////////////////////////////// 
     150void MainWindow::fillGroupWidget(SUIItemsGroup *itemsGroup) 
     151{ 
     152    //Fill widget 
     153    QAutoExpandList* widget= itemsGroup->mListWidget; 
     154    if (!widget) 
     155        return; 
     156    widget->clear(); 
     157    QVector<CControlPanelItem> items = itemsGroup->mItemGroup->items(mEnabledDEs, ui->filterEdit->text()); 
     158    for (int i=0; i<items.size(); i++) 
     159    { 
     160        QListWidgetItem* lw_item = new QListWidgetItem( items[i].displayIcon(), items[i].displayName(), widget); 
     161        widget->addItem(lw_item); 
     162    } 
     163} 
     164 
     165/////////////////////////////////////////////////////////////////////////////// 
     166void MainWindow::slotItemsReady() 
     167{ 
     168    //Find corresponding ItemGroup 
     169    SUIItemsGroup* items_group= NULL; 
     170    CItemGroup *sender = (CItemGroup *)QObject::sender(); 
     171    for (int i=0; i<6; i++) 
     172    { 
     173        if (mItemGropus[i].mItemGroup == sender) 
     174        { 
     175            items_group = &mItemGropus[i]; 
     176            break; 
     177        } 
     178    } 
     179    if (!items_group) 
     180        return; 
     181 
     182    fillGroupWidget(items_group); 
     183} 
     184 
     185/////////////////////////////////////////////////////////////////////////////// 
     186void MainWindow::slotDEChooserActionTriggered(bool checked) 
     187{ 
     188    Q_UNUSED(checked); 
     189} 
     190 
     191/////////////////////////////////////////////////////////////////////////////// 
     192void MainWindow::slotGropTextStateChanged(int state) 
     193{ 
     194    //Find corresponding ItemGroup 
     195    QCheckBox *sender = (QCheckBox *)QObject::sender(); 
     196    for (int i=0; i<6; i++) 
     197    { 
     198        if ((mItemGropus[i].mGroupNameWidget == sender)&&(mItemGropus[i].mListWidget)) 
     199        { 
     200           mItemGropus[i].mListWidget->setVisible(state==Qt::Checked); 
     201           break; 
     202        } 
     203    } 
     204} 
  • src-qt4/pc-controlpanel-next/mainwindow.h

    r9d2b981 r9183130  
    33 
    44#include <QMainWindow> 
     5#include <QCheckBox> 
     6 
     7#include "backend/cp-itemgroup.h" 
     8#include "controls/qautoexpandlist.h" 
    59 
    610namespace Ui { 
     
    1115{ 
    1216    Q_OBJECT 
     17 
     18    //! Structure that bind items group backed with widgets 
     19    typedef struct _SUIItemsGroup 
     20    { 
     21        CItemGroup*      mItemGroup; 
     22        QAutoExpandList* mListWidget; 
     23        QCheckBox*       mGroupNameWidget; 
     24        _SUIItemsGroup(CItemGroup* pbackend=NULL, QAutoExpandList* lw=NULL,QCheckBox* capt=NULL) 
     25        { 
     26            mItemGroup = pbackend; mListWidget= lw; mGroupNameWidget= capt; 
     27        } 
     28    }SUIItemsGroup; 
    1329     
    1430public: 
     
    1935    Ui::MainWindow *ui; 
    2036 
     37    SUIItemsGroup mItemGropus [6]; 
     38    QStringList   mEnabledDEs; 
     39 
    2140    void setupDEChooser(); 
    2241    void setupGroups(); 
     42 
     43    void fillGroupWidget(SUIItemsGroup* itemsGroup ); 
     44 
     45public slots: 
     46    void slotItemsReady(); 
     47    void slotDEChooserActionTriggered ( bool checked ); 
     48 
     49    void slotGropTextStateChanged(int state); 
    2350}; 
    2451 
  • src-qt4/pc-controlpanel-next/mainwindow.ui

    r9d2b981 r9183130  
    77    <x>0</x> 
    88    <y>0</y> 
    9     <width>619</width> 
    10     <height>590</height> 
     9    <width>710</width> 
     10    <height>505</height> 
    1111   </rect> 
    1212  </property> 
     
    121121        <rect> 
    122122         <x>0</x> 
    123          <y>0</y> 
    124          <width>603</width> 
    125          <height>484</height> 
     123         <y>-165</y> 
     124         <width>679</width> 
     125         <height>570</height> 
    126126        </rect> 
    127127       </property> 
    128        <widget class="QCheckBox" name="softwareGroupName"> 
    129         <property name="geometry"> 
    130          <rect> 
    131           <x>6</x> 
    132           <y>6</y> 
    133           <width>471</width> 
    134           <height>16</height> 
    135          </rect> 
    136         </property> 
    137         <property name="font"> 
    138          <font> 
    139           <weight>75</weight> 
    140           <bold>true</bold> 
    141          </font> 
    142         </property> 
    143         <property name="autoFillBackground"> 
    144          <bool>false</bool> 
    145         </property> 
    146         <property name="styleSheet"> 
    147          <string notr="true">QCheckBox{ background-color: rgb(160, 160, 160)} 
    148 QCheckBox::indicator:unchecked{ 
    149 image: url(:images/arrow-down.png); 
    150 } 
    151 QCheckBox::indicator:checked{ 
    152 image: url(:images/arrow-up.png); 
    153 }</string> 
    154         </property> 
    155         <property name="text"> 
    156          <string>Software and updates</string> 
    157         </property> 
    158         <property name="checked"> 
    159          <bool>true</bool> 
    160         </property> 
    161         <property name="autoExclusive"> 
    162          <bool>false</bool> 
    163         </property> 
    164        </widget> 
    165        <widget class="QCheckBox" name="softwareGroupCheckbox_2"> 
    166         <property name="geometry"> 
    167          <rect> 
    168           <x>10</x> 
    169           <y>90</y> 
    170           <width>173</width> 
    171           <height>16</height> 
    172          </rect> 
    173         </property> 
    174         <property name="font"> 
    175          <font> 
    176           <weight>75</weight> 
    177           <bold>true</bold> 
    178          </font> 
    179         </property> 
    180         <property name="autoFillBackground"> 
    181          <bool>false</bool> 
    182         </property> 
    183         <property name="styleSheet"> 
    184          <string notr="true">QCheckBox{ background-color: rgb(160, 160, 160)} 
    185 QCheckBox::indicator:unchecked{ 
    186 image: url(:icons/arrow-down.png); 
    187 } 
    188 QCheckBox::indicator:checked{ 
    189 image: url(:icons/arrow-up.png); 
    190 }</string> 
    191         </property> 
    192         <property name="text"> 
    193          <string>System</string> 
    194         </property> 
    195         <property name="checked"> 
    196          <bool>true</bool> 
    197         </property> 
    198        </widget> 
    199        <widget class="QAutoExpandList" name="softwareLW"> 
    200         <property name="geometry"> 
    201          <rect> 
    202           <x>6</x> 
    203           <y>28</y> 
    204           <width>501</width> 
    205           <height>51</height> 
    206          </rect> 
    207         </property> 
    208        </widget> 
    209        <widget class="QAutoExpandList" name="listWidget_2"> 
    210         <property name="geometry"> 
    211          <rect> 
    212           <x>10</x> 
    213           <y>110</y> 
    214           <width>501</width> 
    215           <height>41</height> 
    216          </rect> 
    217         </property> 
    218        </widget> 
     128       <layout class="QVBoxLayout" name="verticalLayout_2"> 
     129        <item> 
     130         <widget class="QCheckBox" name="softwareGroupName"> 
     131          <property name="font"> 
     132           <font> 
     133            <weight>75</weight> 
     134            <bold>true</bold> 
     135           </font> 
     136          </property> 
     137          <property name="autoFillBackground"> 
     138           <bool>false</bool> 
     139          </property> 
     140          <property name="styleSheet"> 
     141           <string notr="true">QCheckBox{ background-color: rgb(160, 160, 160)} 
     142QCheckBox::indicator:unchecked{ 
     143image: url(:images/arrow-down.png); 
     144} 
     145QCheckBox::indicator:checked{ 
     146image: url(:images/arrow-up.png); 
     147}</string> 
     148          </property> 
     149          <property name="text"> 
     150           <string>Software and updates</string> 
     151          </property> 
     152          <property name="checked"> 
     153           <bool>true</bool> 
     154          </property> 
     155          <property name="autoExclusive"> 
     156           <bool>false</bool> 
     157          </property> 
     158         </widget> 
     159        </item> 
     160        <item> 
     161         <widget class="QAutoExpandList" name="softwareLW"/> 
     162        </item> 
     163        <item> 
     164         <widget class="QCheckBox" name="systemGroupName"> 
     165          <property name="font"> 
     166           <font> 
     167            <weight>75</weight> 
     168            <bold>true</bold> 
     169           </font> 
     170          </property> 
     171          <property name="autoFillBackground"> 
     172           <bool>false</bool> 
     173          </property> 
     174          <property name="styleSheet"> 
     175           <string notr="true">QCheckBox{ background-color: rgb(160, 160, 160)} 
     176QCheckBox::indicator:unchecked{ 
     177image: url(:images/arrow-down.png); 
     178} 
     179QCheckBox::indicator:checked{ 
     180image: url(:images/arrow-up.png); 
     181}</string> 
     182          </property> 
     183          <property name="text"> 
     184           <string>System management</string> 
     185          </property> 
     186          <property name="checked"> 
     187           <bool>true</bool> 
     188          </property> 
     189         </widget> 
     190        </item> 
     191        <item> 
     192         <widget class="QAutoExpandList" name="systemLW"/> 
     193        </item> 
     194        <item> 
     195         <widget class="QCheckBox" name="hardwareGroupName"> 
     196          <property name="font"> 
     197           <font> 
     198            <weight>75</weight> 
     199            <bold>true</bold> 
     200           </font> 
     201          </property> 
     202          <property name="autoFillBackground"> 
     203           <bool>false</bool> 
     204          </property> 
     205          <property name="styleSheet"> 
     206           <string notr="true">QCheckBox{ background-color: rgb(160, 160, 160)} 
     207QCheckBox::indicator:unchecked{ 
     208image: url(:images/arrow-down.png); 
     209} 
     210QCheckBox::indicator:checked{ 
     211image: url(:images/arrow-up.png); 
     212}</string> 
     213          </property> 
     214          <property name="text"> 
     215           <string>Hardware</string> 
     216          </property> 
     217          <property name="checked"> 
     218           <bool>true</bool> 
     219          </property> 
     220         </widget> 
     221        </item> 
     222        <item> 
     223         <widget class="QAutoExpandList" name="hardwareLW"/> 
     224        </item> 
     225        <item> 
     226         <widget class="QCheckBox" name="networkingGroupName"> 
     227          <property name="font"> 
     228           <font> 
     229            <weight>75</weight> 
     230            <bold>true</bold> 
     231           </font> 
     232          </property> 
     233          <property name="autoFillBackground"> 
     234           <bool>false</bool> 
     235          </property> 
     236          <property name="styleSheet"> 
     237           <string notr="true">QCheckBox{ background-color: rgb(160, 160, 160)} 
     238QCheckBox::indicator:unchecked{ 
     239image: url(:images/arrow-down.png); 
     240} 
     241QCheckBox::indicator:checked{ 
     242image: url(:images/arrow-up.png); 
     243}</string> 
     244          </property> 
     245          <property name="text"> 
     246           <string>Networking</string> 
     247          </property> 
     248          <property name="checked"> 
     249           <bool>true</bool> 
     250          </property> 
     251         </widget> 
     252        </item> 
     253        <item> 
     254         <widget class="QAutoExpandList" name="networkingLW"/> 
     255        </item> 
     256        <item> 
     257         <widget class="QCheckBox" name="deGroupName"> 
     258          <property name="font"> 
     259           <font> 
     260            <weight>75</weight> 
     261            <bold>true</bold> 
     262           </font> 
     263          </property> 
     264          <property name="autoFillBackground"> 
     265           <bool>false</bool> 
     266          </property> 
     267          <property name="styleSheet"> 
     268           <string notr="true">QCheckBox{ background-color: rgb(160, 160, 160)} 
     269QCheckBox::indicator:unchecked{ 
     270image: url(:images/arrow-down.png); 
     271} 
     272QCheckBox::indicator:checked{ 
     273image: url(:images/arrow-up.png); 
     274}</string> 
     275          </property> 
     276          <property name="text"> 
     277           <string>Desktop environment</string> 
     278          </property> 
     279          <property name="checked"> 
     280           <bool>true</bool> 
     281          </property> 
     282         </widget> 
     283        </item> 
     284        <item> 
     285         <widget class="QAutoExpandList" name="deLW"/> 
     286        </item> 
     287        <item> 
     288         <widget class="QCheckBox" name="toolsGroupName"> 
     289          <property name="font"> 
     290           <font> 
     291            <weight>75</weight> 
     292            <bold>true</bold> 
     293           </font> 
     294          </property> 
     295          <property name="autoFillBackground"> 
     296           <bool>false</bool> 
     297          </property> 
     298          <property name="styleSheet"> 
     299           <string notr="true">QCheckBox{ background-color: rgb(160, 160, 160)} 
     300QCheckBox::indicator:unchecked{ 
     301image: url(:images/arrow-down.png); 
     302} 
     303QCheckBox::indicator:checked{ 
     304image: url(:images/arrow-up.png); 
     305}</string> 
     306          </property> 
     307          <property name="text"> 
     308           <string>Tools</string> 
     309          </property> 
     310          <property name="checked"> 
     311           <bool>true</bool> 
     312          </property> 
     313         </widget> 
     314        </item> 
     315        <item> 
     316         <widget class="QAutoExpandList" name="toolsLW"/> 
     317        </item> 
     318        <item> 
     319         <spacer name="verticalSpacer"> 
     320          <property name="orientation"> 
     321           <enum>Qt::Vertical</enum> 
     322          </property> 
     323          <property name="sizeHint" stdset="0"> 
     324           <size> 
     325            <width>20</width> 
     326            <height>40</height> 
     327           </size> 
     328          </property> 
     329         </spacer> 
     330        </item> 
     331       </layout> 
    219332      </widget> 
    220333     </widget> 
     
    227340     <x>0</x> 
    228341     <y>0</y> 
    229      <width>619</width> 
     342     <width>710</width> 
    230343     <height>21</height> 
    231344    </rect> 
Note: See TracChangeset for help on using the changeset viewer.