Changeset 1d2d46a


Ignore:
Timestamp:
07/11/13 11:07:43 (13 months ago)
Author:
Ken Moore <ken@…>
Branches:
master, 9.2-release, releng/10.0, releng/10.0.1, releng/10.0.2
Children:
8679296
Parents:
b1457e5
Message:

Completely redo the simple desktop switcher option. It now puts it in the login widget underneath the password prompt. Also clean up the default theme a bit to accomodate these changes.

Location:
src-qt4/PCDM
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/PCDM/src/loginWidget.cpp

    r2d615ae r1d2d46a  
    4848        pushUserIcon->setDefaultAction( tmp3 ); 
    4949        pushUserIcon->setFocusPolicy(Qt::NoFocus); 
     50  listDE = new QComboBox; 
     51  deIcon = new QLabel; 
     52         
    5053  //Add the items to the grid 
    5154    //user not yet selected widgets 
     
    5659      flayout->addRow(pushUserIcon, listUsers); 
    5760      flayout->addRow(pushViewPassword, linePassword); 
     61      flayout->addRow(deIcon,listDE); 
     62    vlayout->addSpacing(15); 
    5863    vlayout->addLayout(flayout); 
     64    vlayout->addSpacing(20); 
    5965      hlayout2->addWidget(pushLogin); 
    6066    vlayout->addLayout(hlayout2); 
     
    6773  connect(listUserBig,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(slotUserSelected()) ); 
    6874  connect(listUserBig,SIGNAL(currentRowChanged(int)),this,SLOT(slotUserHighlighted(int)) ); 
     75  connect(listDE,SIGNAL(currentIndexChanged(int)),this,SLOT(slotDesktopChanged(int)) ); 
    6976  allowPasswordView(allowPWVisible); //setup signal/slots for pushViewPassword 
    7077  //Set this layout for the loginWidget 
     
    8996    pushLogin->setVisible(TRUE); 
    9097    pushViewPassword->setVisible(TRUE); 
     98    if( listDE->count() < 1 ){ listDE->setVisible(FALSE); deIcon->setVisible(FALSE); } 
     99    else{ listDE->setVisible(TRUE); deIcon->setVisible(TRUE); } 
    91100  }else{ 
    92101    userIcon->setVisible(TRUE); 
     
    96105    linePassword->setVisible(FALSE); 
    97106    pushLogin->setVisible(FALSE); 
    98     pushViewPassword->setVisible(FALSE);     
     107    pushViewPassword->setVisible(FALSE);  
     108    listDE->setVisible(FALSE); 
     109    deIcon->setVisible(FALSE); 
    99110  } 
    100111  if(pwVisible){ 
     
    185196} 
    186197 
     198void LoginWidget::slotDesktopChanged(int index){ 
     199  if(index == -1){ 
     200    deIcon->setPixmap(QPixmap("")); 
     201    deIcon->setToolTip(""); 
     202  }else{ 
     203    deIcon->setPixmap( QPixmap(desktopIcons[index]).scaled(desktopIconSize) ); 
     204    deIcon->setToolTip(desktopInfo[index]); 
     205  } 
     206} 
     207 
    187208//----------------------------- 
    188209//     PUBLIC FUNCTIONS 
     
    198219} 
    199220 
     221QString LoginWidget::currentDE(){ 
     222  QString de = listDE->currentText(); 
     223  return de; 
     224} 
     225 
    200226void LoginWidget::setCurrentUser(QString id){ 
    201227  int index = idL.indexOf(id); 
     
    207233    emit UserChanged(id); 
    208234  } 
     235} 
     236 
     237void LoginWidget::setCurrentDE(QString de){ 
     238  for(int i=0; i<listDE->count(); i++){ 
     239    if( listDE->itemText(i) == de ){ 
     240      listDE->setCurrentIndex(i); 
     241      break; 
     242    } 
     243  } 
     244  updateWidget(); 
    209245} 
    210246 
     
    227263} 
    228264 
     265void LoginWidget::setDesktops(QStringList text, QStringList icon, QStringList info){ 
     266  if((text.length() != icon.length()) && (text.length() != info.length()) ){ qDebug() << "LoginWidget: Unequal text/icon desktop lists"; return; } 
     267  listDE->clear(); 
     268  desktopIcons = icon; //save for later 
     269  desktopInfo = info; //save for later 
     270  for(int i=0; i<text.length(); i++){ 
     271    listDE->addItem(text[i]); 
     272  } 
     273} 
     274 
    229275void LoginWidget::displayHostName(QString name){ 
    230276  hostName = name; 
     
    249295} 
    250296 
     297void LoginWidget::setDesktopIconSize(QSize iconsize){ 
     298  desktopIconSize = iconsize; 
     299} 
     300 
    251301void LoginWidget::changeStyleSheet(QString item, QString style){ 
    252302  //Propagate the style sheet to both the buttons and the iconViewer 
     
    278328  listUserBig->setToolTip(tr("Available users")); 
    279329  linePassword->setToolTip(tr("Login password for the selected user")); 
     330  listDE->setToolTip(tr("Available desktop environments")); 
    280331  //Setup the computer/host name display 
    281332  if( hostName.isEmpty() ){ 
  • src-qt4/PCDM/src/loginWidget.h

    r2d615ae r1d2d46a  
    3939        QString currentUsername(); 
    4040        QString currentPassword(); 
     41        QString currentDE(); 
    4142        void setCurrentUser(QString); 
     43        void setCurrentDE(QString); 
    4244        void setUsernames(QStringList); 
     45        void setDesktops(QStringList, QStringList, QStringList); 
    4346        void displayHostName(QString); 
    44         //Manually set the "back" (up/left) and "forward" (down/right) button icons 
    4547        void changeButtonIcon(QString button, QString iconFile, QSize iconSize); 
     48        void setDesktopIconSize(QSize); 
    4649        //Change the style sheet for all widget items (see QtStyle options for more) 
    4750        void changeStyleSheet(QString item, QString style); 
     
    5457  private: 
    5558        QComboBox* listUsers; 
     59        QComboBox* listDE; 
    5660        QListWidget* listUserBig; 
    5761        QLineEdit* linePassword; 
     
    5963        QToolButton* pushViewPassword; 
    6064        QToolButton *pushUserIcon, *userIcon; 
     65        QLabel* deIcon; 
    6166         
    6267 
    63         QStringList idL; 
     68        QStringList idL, desktopIcons, desktopInfo; 
     69        QSize desktopIconSize; 
    6470        QString hostName; 
    6571        bool userSelected, pwVisible, allowPWVisible; 
     
    7682        void slotChooseUser(int); 
    7783        void slotChangePWView(); 
     84        void slotDesktopChanged(int); 
    7885         
    7986  signals: 
  • src-qt4/PCDM/src/pcdm-gui.cpp

    r4018e43 r1d2d46a  
    138138    toolbar->addAction(keyboardButton); 
    139139    connect( keyboardButton, SIGNAL(triggered()), this, SLOT(slotChangeKeyboardLayout()) ); 
    140      
     140 
    141141    //----Add a spacer 
    142142    QWidget* spacer = new QWidget(); 
    143     spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 
     143    spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); 
    144144    toolbar->addWidget(spacer); 
    145      
    146     if(simpleDESwitcher){ 
    147       if(DEBUG_MODE){ qDebug() << " - Create Simple DE Switcher"; } 
    148       //Create the simple DE Switcher 
    149       sdeSwitcher = new QComboBox(this);  
    150       sdeSwitcher->setFocusPolicy( Qt::NoFocus ); 
    151       sdeSwitcher->setIconSize(currentTheme->itemIconSize("toolbar")); 
    152       toolbar->addWidget(sdeSwitcher); 
    153       //Add an additional spacer 
    154       QWidget* spacer2 = new QWidget(); 
    155       spacer2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 
    156       toolbar->addWidget(spacer2); 
    157        
    158     } 
    159      
     145         
    160146    //----System Shutdown/Restart 
    161147    if(DEBUG_MODE){ qDebug() << " - Create System Button"; } 
     
    219205     
    220206    //----Desktop Environment Switcher 
    221     if(!simpleDESwitcher){ 
     207    if(simpleDESwitcher){ 
     208      loginW->setDesktopIconSize(currentTheme->itemIconSize("desktop")); 
     209    }else{ 
    222210      if(DEBUG_MODE){ qDebug() << " - Create DE Switcher"; } 
    223211      //Create the switcher 
     
    260248  if(DEBUG_MODE){ qDebug() << " - Fill GUI with data"; } 
    261249  retranslateUi(); 
     250  if(simpleDESwitcher && !lastUser.isEmpty()){ 
     251     
     252  } 
    262253  if(DEBUG_MODE){ qDebug() << "Done with initialization"; } 
    263254 
     
    269260  QString binary; 
    270261  if(simpleDESwitcher){ 
    271     binary = Backend::getDesktopBinary(sdeSwitcher->currentText()); 
     262    binary = Backend::getDesktopBinary(loginW->currentDE()); 
    272263  }else{ 
    273264    binary = Backend::getDesktopBinary(deSwitcher->currentItem()); 
     
    286277void PCDMgui::slotLoginSuccess(){ 
    287278  QString de; 
    288   if(simpleDESwitcher){ de = sdeSwitcher->currentText(); } 
     279  if(simpleDESwitcher){ de = loginW->currentDE(); } 
    289280  else{ de = deSwitcher->currentItem(); } 
    290281  saveLastLogin( loginW->currentUsername(), de ); 
     
    320311 
    321312void PCDMgui::slotUserSelected(QString newuser){ 
     313  if(DEBUG_MODE){ qDebug() << "User selection changed:" << newuser; } 
    322314  if(newuser.isEmpty()){ 
    323     if(simpleDESwitcher){ sdeSwitcher->setVisible(FALSE); } 
    324     else{ deSwitcher->setVisible(FALSE); } 
    325   }else{ 
    326     if(simpleDESwitcher){ sdeSwitcher->setVisible(TRUE); } 
    327     else{ deSwitcher->setVisible(TRUE); } 
     315    if(!simpleDESwitcher){ deSwitcher->setVisible(FALSE); } 
     316  }else{ 
     317    if(!simpleDESwitcher){ deSwitcher->setVisible(TRUE); } 
    328318    //Try to load the user's last DE 
    329319    loadLastDE(newuser); 
     
    477467  } 
    478468  loginW->retranslateUi(); 
     469   
    479470  //The desktop switcher 
    480   if(simpleDESwitcher){ sdeSwitcher->clear(); } 
    481   else{ deSwitcher->removeAllItems(); } 
    482471   
    483472    //Get the new desktop list (translated) 
    484473    QStringList deList = Backend::getAvailableDesktops(); 
    485     for(int i=0; i<deList.length(); i++){ 
    486       QString deIcon = Backend::getDesktopIcon(deList[i]); 
    487       if( deIcon.isEmpty() ){ deIcon = currentTheme->itemIcon("desktop"); } //set the default icon if none given 
    488       if( !QFile::exists(deIcon) ){ deIcon = ":/images/desktop.png"; } 
    489       //Now add the item back to the widget 
    490       if(simpleDESwitcher){ sdeSwitcher->addItem(QIcon(deIcon), deList[i]); } 
    491       else{ deSwitcher->addItem( deList[i], deIcon, Backend::getDesktopComment(deList[i]) ); } 
    492     } 
    493     //Set the switcher to the last used desktop environment 
    494     if( !lastDE.isEmpty() ){  
    495       if(simpleDESwitcher){  
    496         int index = deList.indexOf(lastDE); 
    497         if(index != -1){ sdeSwitcher->setCurrentIndex(index); } 
    498         else{ sdeSwitcher->setCurrentIndex(0); } 
    499       }else{  
    500         deSwitcher->setCurrentItem(lastDE);  
     474    //Now fill the switcher 
     475    if(!simpleDESwitcher){ 
     476      deSwitcher->removeAllItems(); 
     477      for(int i=0; i<deList.length(); i++){ 
     478        QString deIcon = Backend::getDesktopIcon(deList[i]); 
     479        if( deIcon.isEmpty() ){ deIcon = currentTheme->itemIcon("desktop"); } //set the default icon if none given 
     480        if( !QFile::exists(deIcon) ){ deIcon = ":/images/desktop.png"; } 
     481        //Now add the item back to the widget 
     482        deSwitcher->addItem( deList[i], deIcon, Backend::getDesktopComment(deList[i]) ); 
    501483      } 
     484      //Set the switcher to the last used desktop environment 
     485      if( !lastDE.isEmpty() ){ deSwitcher->setCurrentItem(lastDE); } 
     486 
     487    }else{ 
     488      //Simple switcher on the login widget 
     489      QStringList deIcons, deInfo; 
     490      for(int i=0; i<deList.length(); i++){  
     491        QString ico = Backend::getDesktopIcon(deList[i]); 
     492        if(ico.isEmpty()){ ico = currentTheme->itemIcon("desktop"); } 
     493        if(!QFile::exists(ico)){ ico = ":/images/desktop.png"; } 
     494        deIcons << ico; 
     495        deInfo << Backend::getDesktopComment(deList[i]); 
     496      } 
     497      loginW->setDesktops(deList, deIcons, deInfo); 
     498      //Set the switcher to the last used desktop environment 
     499      if( !lastDE.isEmpty() ){ loginW->setCurrentDE(lastDE); } 
    502500    } 
    503501 
  • src-qt4/PCDM/src/pcdm-gui.h

    rd9b0b9e8 r1d2d46a  
    6767    QMenu* systemMenu; 
    6868    FancySwitcher* deSwitcher; // full switcher 
    69     QComboBox* sdeSwitcher; //simple switcher 
    7069    bool simpleDESwitcher; 
    7170     
  • src-qt4/PCDM/themes/default/default.theme

    r4018e43 r1d2d46a  
    2121   
    2222USER_IMAGE=default-user.png             # Image for the user selection widget 
    23   USER_IMAGE_SIZE=32x32                   # Size for the image (in pixels) 
     23  USER_IMAGE_SIZE=30x30                   # Size for the image (in pixels) 
    2424   
    2525PASSWORD_IMAGE=password.png     # Default image for the password entry box 
    26   PASSWORD_IMAGE_SIZE=20x20               # Size for the image (in pixels) 
     26  PASSWORD_IMAGE_SIZE=30x30               # Size for the image (in pixels) 
    2727   
    2828LOGIN_IMAGE=login.png           # Image contained in the login button 
    29   LOGIN_IMAGE_SIZE=32x32                  # Size for the image (in pixels) 
     29  LOGIN_IMAGE_SIZE=35x35                  # Size for the image (in pixels) 
    3030 
    3131DESKTOP_IMAGE=default-desktop.png       # Default Image for the DE selection if none found 
    3232  DESKTOP_ORIENTATION=simple                    # [horizontal | vertical | simple] 
     33  DESKTOP_IMAGE_SIZE=30x30                      # Size for the image (in pixels) 
    3334  #Additional DESKTOP settings if not set to "simple" 
    34   DESKTOP_IMAGE_SIZE=48x48                      # Size for the image (in pixels) 
    3535  NEXTDE_IMAGE=nextDE.png                       # Next DE selection (right/down) 
    3636  PREVIOUSDE_IMAGE=previousDE.png               # Previous DE selection (left/up) 
     
    105105        subcontrol-position: top center; 
    106106} 
    107 QLabel{  
    108         background-color: rgba(253,253,255,150);  
    109         color: black;  
    110         border:1px solid grey; 
    111         border-radius: 5px; 
    112 } 
    113107QGraphicsView{  
    114108        background: rgba(253,253,253,180);  
Note: See TracChangeset for help on using the changeset viewer.