Changeset cda9d75


Ignore:
Timestamp:
05/16/14 05:15:04 (14 months ago)
Author:
yurkis <yurkis@…>
Branches:
master, enter/10, releng/10.0.2, releng/10.0.3, releng/10.1, releng/10.1.1, releng/10.1.2
Children:
2d9528a
Parents:
3341380f
Message:

New control panel: item reading ready at 90%

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

Legend:

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

    re7e31ef rcda9d75  
    2424 
    2525#include "cp-item.h" 
     26#include "../config.h" 
     27#include "pcbsd-utils.h" 
     28 
     29#include <QSettings> 
     30#include <QLocale> 
     31#include <QFile> 
     32#include <QTextStream> 
     33#include <QProcess> 
     34#include <QTemporaryFile> 
     35 
     36#include <unistd.h> 
     37#include <stdlib.h> 
     38#include <sys/stat.h> 
     39 
     40using namespace pcbsd; 
    2641 
    2742const char* const TRY_MESSAGE_FIELD = "PC-TryMessage"; 
    2843const char* const TRY_COMMAND_FIELD = "PC-TryCommand"; 
    29 const char* const DE_FIELD = "OnlyShowIn"; 
     44const char* const DE_FIELD_SHOW = "OnlyShowIn"; 
     45const char* const DE_FIELD_HIDE = "NotShowIn"; 
    3046const char* const KEYWORDS_FIELD= "Keywords"; 
     47 
     48const QString DEFAULT_ICON_LOCATION = PREFIX + "/share/pcbsd/pc-controlpanel/icons/"; 
     49 
     50const QStringList SU_NAMES = QStringList()<<QString("pc-su ")<<QString("kdesu ")<<QString("gtksu ")<<QString("sudo ")<<QString("gksu "); 
    3151 
    3252 
     
    3858 
    3959/////////////////////////////////////////////////////////////////////////////// 
    40 bool CControlPanelItem::read(QString file, QStringList enabledDE) 
     60bool CControlPanelItem::read(QString file) 
    4161{ 
     62    QString Str; 
    4263 
     64    misValid= false; 
     65 
     66 
     67    //---------------Try to open file 
     68    QSettings Reader(file, QSettings::IniFormat); 
     69    if (Reader.status() != QSettings::NoError) 
     70        return false; 
     71    Reader.setIniCodec("UTF-8"); 
     72 
     73    Reader.beginGroup("Desktop Entry"); 
     74 
     75    //---------------Check TryExec field 
     76    Str=  Reader.value("TryExec").toString(); 
     77    if (Str.length()) 
     78    { 
     79        struct stat sts; 
     80        if (  (0 != stat(qPrintable(Str),&sts)) 
     81            &&(0 != access(qPrintable(Str), X_OK))) 
     82                return false; 
     83    } 
     84 
     85    //---------------Check TryCommand extention field 
     86    Str= Reader.value(TRY_COMMAND_FIELD).toString(); 
     87    if (Str.length()) 
     88    { 
     89        QTemporaryFile tmpFile; 
     90        if (!tmpFile.open()) 
     91        { 
     92            return false; 
     93        } 
     94        QTextStream out(&tmpFile); 
     95        out<<Str.toLatin1()<<"\n"; 
     96        out.flush(); 
     97        tmpFile.flush(); 
     98 
     99        QProcess shell_proc; 
     100        shell_proc.start("/bin/sh",QStringList()<<tmpFile.fileName()); 
     101        shell_proc.waitForFinished(7000); 
     102        if (shell_proc.exitCode()) 
     103        { 
     104            return false; 
     105        } 
     106    }//TryCommand is present 
     107 
     108    //----------------Get Desktop environment to show (onlyShowIn) 
     109    Str = Reader.value(DE_FIELD_SHOW).toString(); 
     110    if (Str.length()) 
     111    { 
     112        mShowIn = Str.split(";", QString::SkipEmptyParts); 
     113        for (int i=0; i<mShowIn.size(); i++) 
     114        { 
     115            mShowIn[i]= mShowIn[i].toLower().trimmed(); 
     116        } 
     117    }// if DE_FIELD_SHOW is present 
     118 
     119    //------------Get Desktop environment to hide (NotShowIn) 
     120    Str = Reader.value(DE_FIELD_HIDE).toString(); 
     121    if (Str.length()) 
     122    { 
     123        mNotShowIn = Str.split(";", QString::SkipEmptyParts); 
     124        for (int i=0; i<mShowIn.size(); i++) 
     125        { 
     126            mNotShowIn[i]= mNotShowIn[i].toLower().trimmed(); 
     127        } 
     128    }// if DE_FIELD_HIDE is present 
     129 
     130    //--------------- Get type 
     131    mType=Reader.value("Type").toString(); 
     132 
     133    //--------------- Get name and displayName; 
     134    mName = Reader.value("Name").toString(); 
     135    if (!mName.length()) 
     136    { 
     137        mName = Reader.value("GenericName").toString(); 
     138        if (!mName.length()) 
     139            return false; 
     140    } 
     141 
     142    mDisplayName = getLocalizedField(Reader, "Name"); 
     143    if (!mDisplayName.length()) 
     144    { 
     145        mDisplayName = getLocalizedField(Reader, "GenericName"); 
     146    } 
     147 
     148    //--------------- Get Exec command and check for super user rights 
     149    mExecCommand= Reader.value("Exec").toString(); 
     150    if (mExecCommand.length()) 
     151    { 
     152        misRootRequired = false; 
     153        QString tmp = mExecCommand.trimmed(); 
     154 
     155        for (int i=0; i<SU_NAMES.size(); i++ ) 
     156        { 
     157            if (tmp.left(SU_NAMES[i].size()) == SU_NAMES[i]) 
     158            { 
     159                misRootRequired = true; 
     160                break; 
     161            } 
     162        } 
     163    }//Exec field & SU rights check 
     164 
     165 
     166 
     167    mFile= file; 
     168    misValid = true; 
     169    return true; 
    43170} 
     171 
     172/////////////////////////////////////////////////////////////////////////////// 
     173QString CControlPanelItem::getLocalizedField(const QSettings &Reader, const QString &FieldName) 
     174{ 
     175    QString Str; 
     176    QString LocaleCountry = QLocale::system().name(); 
     177    QString Locale= QString("[")+LocaleCountry.left(2)+QString("]"); 
     178    LocaleCountry= QString("[")+LocaleCountry+QString("]"); 
     179 
     180    Str = Reader.value(FieldName + Locale).toString(); 
     181    if (Str.length()) 
     182        return Str; 
     183 
     184    Str= Reader.value(FieldName+LocaleCountry).toString(); 
     185    if (Str.length()) 
     186        return Str; 
     187 
     188    return Reader.value(FieldName).toString(); 
     189} 
  • src-qt4/pc-controlpanel-next/backend/cp-item.h

    re7e31ef rcda9d75  
    3939    CControlPanelItem(); 
    4040 
    41     bool read(QString file, QStringList enabledDE); 
     41    bool read(QString file); 
    4242    bool launch(); 
    4343 
     
    4747    QString description(); 
    4848    QString displayDescription(); 
    49     QStringList tags(); 
     49    QStringList keywords(); 
    5050    QString iconFile(); 
    5151    QIcon   icon(); 
    5252    QIcon   displayIcon(); 
     53    QString type(); 
    5354 
    5455    QString execString(); 
    55     QString execPath(); 
    5656    bool    isRootRequired(); 
    57     bool    isSudoRequired(); 
    5857    bool    isMessageBox(); 
    5958    QString messageBoxText(); 
    6059 
    6160private: 
     61    bool    misValid; 
     62    QString mType; 
    6263    QString mFile; 
    6364    QString mName; 
    6465    QString mDisplayName; 
    65     QString mDescription; 
    66     QString mDisplayDescription; 
     66    QString mComment; 
     67    QString mDisplayComemnt; 
     68    QString mExecCommand; 
     69    bool    misRootRequired; 
     70 
     71    QStringList mKeywords; 
     72    QStringList mShowIn; 
     73    QStringList mNotShowIn; 
    6774 
    6875protected: 
  • src-qt4/pc-controlpanel-next/pc-controlpanel.pro

    re7e31ef rcda9d75  
    66 
    77QT       += core gui 
     8 
     9LIBS     += -L../libpcbsd -L/usr/local/lib -lpcbsd-ui -lpcbsd-utils -lQtSolutions_SingleApplication-head 
     10INCLUDEPATH     += ../libpcbsd/utils ../libpcbsd/ui /usr/local/include 
    811 
    912greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
     
    2124 
    2225FORMS    += mainwindow.ui 
     26 
     27 
     28desktop.path=/usr/local/share/applications/ 
     29desktop.files=pccontrol.desktop 
     30 
     31cleanitems.path=/usr/local/share/pcbsd/pc-controlpanel/items 
     32cleanitems.extra=rm -rf $(INSTALL_ROOT)/usr/local/share/pcbsd/pc-controlpanel/items 
     33 
     34mkdiritems.path=/usr/local/share/pcbsd/pc-controlpanel/items 
     35mkdiritems.extra=mkdir -p $(INSTALL_ROOT)/usr/local/share/pcbsd/pc-controlpanel/items 
     36 
     37cpitems.path=/usr/local/share/pcbsd/pc-controlpanel/items 
     38cpitems.extra=tar cvf - --exclude '.svn/' -C items . 2>/dev/null | tar xvf - -C $(INSTALL_ROOT)/usr/local/share/pcbsd/pc-controlpanel/items 2>/dev/null 
     39 
     40mkdiricons.path=/usr/local/share/pcbsd/pc-controlpanel/icons 
     41mkdiricons.extra=mkdir -p $(INSTALL_ROOT)/usr/local/share/pcbsd/pc-controlpanel/icons 
     42 
     43cpicons.path=/usr/local/share/pcbsd/pc-controlpanel/items 
     44cpicons.extra=tar cvf - --exclude '.svn/' -C icons . 2>/dev/null | tar xvf - -C $(INSTALL_ROOT)/usr/local/share/pcbsd/pc-controlpanel/icons 2>/dev/null 
     45 
     46INSTALLS += target desktop cleanitems mkdiritems cpitems mkdiricons cpicons 
Note: See TracChangeset for help on using the changeset viewer.