source: src-qt4/pc-controlpanel/grouplist.cpp @ 18c4ab8

9.2-releasereleng/10.0releng/10.0.1releng/10.0.2releng/10.0.3releng/10.1
Last change on this file since 18c4ab8 was 18c4ab8, checked in by Ken Moore <ken@…>, 14 months ago

Fix compilation warnings for pc-controlpanel on 10.x

  • Property mode set to 100644
File size: 5.7 KB
Line 
1/**************************************************************************
2*   Copyright (C) 2011 by Yuri Momotyuk                                   *
3*   yurkis@gmail.com                                                      *
4*                                                                         *
5*   Permission is hereby granted, free of charge, to any person obtaining *
6*   a copy of this software and associated documentation files (the       *
7*   "Software"), to deal in the Software without restriction, including   *
8*   without limitation the rights to use, copy, modify, merge, publish,   *
9*   distribute, sublicense, and/or sell copies of the Software, and to    *
10*   permit persons to whom the Software is furnished to do so, subject to *
11*   the following conditions:                                             *
12*                                                                         *
13*   The above copyright notice and this permission notice shall be        *
14*   included in all copies or substantial portions of the Software.       *
15*                                                                         *
16*   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
17*   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
18*   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*
19*   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR     *
20*   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
21*   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
22*   OTHER DEALINGS IN THE SOFTWARE.                                       *
23***************************************************************************/
24
25#include "grouplist.h"
26#include "pbiinfo.h"
27#include <QDir>
28#include <QSizePolicy>
29#include <QLayout>
30#include <QPainter>
31
32const int ICON_DIM = 64;
33const char* const ROOT_PICTURE = ":/images/images/security-medium.png";
34//const char* const ROOT_IMAGE[] = ":/images/images/object-locked.png";
35
36QGroupList::QGroupList(QWidget *parent) :
37    QAutoExpandList(parent)
38{
39    setIconSize(QSize(ICON_DIM, ICON_DIM));
40        setViewMode(QListView::IconMode);
41        setWordWrap(true);
42        setFrameStyle(QFrame::NoFrame);
43        //setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum));
44}
45
46///////////////////////////////////////////////////////////////////////////////
47int QGroupList::read(QString Path, const QVector<QString>& vEnabledDE, bool EnableSudo, bool EnableSu)
48{
49        clear();
50        QDir dir(Path);
51        if (!dir.exists(Path))
52                return 0;
53
54        QStringList DirList =dir.entryList(QStringList("*.desktop"));
55        for(int i=0; i<DirList.size(); i++)
56        {
57                QCPItem* anItem = new QCPItem;
58
59                if (anItem->readDE(dir.absoluteFilePath(DirList[i]), vEnabledDE))
60                {
61                    if ((anItem->isSudoRequired() && (!EnableSudo))
62                      ||(anItem->isRootRequired() && (!EnableSu)))
63                    {
64                        delete anItem;
65                    }
66                    else
67                    {
68                        makeIcon(anItem);
69                        addItem(anItem);
70                    }
71                }
72                else
73                        delete anItem;
74        }// for all files in dir
75
76    setAcceptDrops(false);
77    setDragEnabled(false);
78
79        setIconSize(QSize(32, 32));
80
81        fitSize();
82
83        return count();
84}
85
86///////////////////////////////////////////////////////////////////////////////
87void QGroupList::makeIcon(QCPItem* anItem)
88{
89
90    QPixmap orig(ICON_DIM, ICON_DIM);
91
92    QPixmap pix;
93    orig.fill(Qt::transparent);
94
95    QPainter painter(&orig);
96
97    painter.drawPixmap(0, 0, ICON_DIM, ICON_DIM, anItem->icon().pixmap(ICON_DIM));
98
99    if ( anItem->isRootRequired() && pix.load(ROOT_PICTURE) )
100    {
101
102        painter.drawPixmap(orig.width() - pix.width(), 0 , pix);
103        anItem->setIcon(QIcon(orig));
104    }
105
106    anItem->setIcon(QIcon(orig));
107}
108
109///////////////////////////////////////////////////////////////////////////////
110void QGroupList::focusOutEvent ( QFocusEvent * event )
111{
112        QListWidget::focusOutEvent( event);
113        setCurrentRow(-1);
114}
115
116///////////////////////////////////////////////////////////////////////////////
117bool QGroupList::setFilter(const QString& filerString)
118{       
119    int NumHidden=0;
120
121        for (int i=0; i< count(); i++)
122        {
123                QCPItem* curr = (QCPItem*)item(i);
124                if (!filerString.length())
125                {
126                        curr->setHidden(false);
127            curr->setFlags(curr->flags() | Qt::ItemIsEnabled);
128                }
129                else
130                {
131             bool IsHide = !curr->itemName().contains(filerString, Qt::CaseInsensitive);
132             IsHide = IsHide && (!curr->itemOriginalName().contains(filerString, Qt::CaseInsensitive));
133             //IsHide = IsHide && (!curr->tags().contains(filerString, Qt::CaseInsensitive));
134             //curr->setHidden(IsHide);
135             QStringList Tags = curr->tags();
136             QString Tag;
137             for(int i=0; i<Tags.size(); i++)
138             {
139                Tag = Tags.at(i).trimmed();
140                if (Tag.contains(filerString, Qt::CaseInsensitive))
141                {
142                    IsHide = false;
143                    break;
144                }
145             }
146
147             curr->setFlags((IsHide)?curr->flags() & (~Qt::ItemIsEnabled)
148                                    :curr->flags() | Qt::ItemIsEnabled);
149             if (IsHide)
150                NumHidden++;
151                }
152        }
153
154        fitSize();
155        this->layout()->update();
156
157        return (NumHidden<count());
158}
159
160///////////////////////////////////////////////////////////////////////////////
161void QGroupList::setDisplayDEName(bool isDisplay)
162{
163    for (int i=0; i< count(); i++)
164    {
165        QCPItem* curr = (QCPItem*)item(i);
166        if (curr)
167            curr->setDisplayDEName(isDisplay);
168    }//for all items
169}
Note: See TracBrowser for help on using the repository browser.