Source Code (Use browser search to find items of interest.)

Class Index

knu'myListManager (./kdenetwork/knu/mylistmanager.h:47)

class myListManager: public QWidget
{
  Q_OBJECT

public:

  enum Features {
    NoFeature     = 0,
    UpDownButtons = 0x0001,	/* Up button and Down Button */
    ShortLabels   = 0x0002	/* Show +/- insteed of add/remove */
  }; 


  /**
   * Constructor with a title in a groupBox.
   *
   * Some day, I will add a functionality enum that will add/remove Up
   * and Down button.
   *
   * @param title Widget title
   * @param parent Parent widget
   * @param name Widget's name (internal only) 
   * @param f Feature list
   */
  myListManager(QString title, 
		QWidget *parent = 0, 
		const char *name = 0, Features f = NoFeature);
  /**
   * Constructor.
   *
   * Some day, I will add a functionality enum that will add/remove Up
   * and Down button.
   *
   * @param parent Parent widget
   * @param name Widget's name (internal only) 
   * @param f Feature list
   */
  myListManager(QWidget *parent = 0, 
		const char *name = 0, Features f = NoFeature);

  /**
   * Destructor
   */
  ~myListManager();

  /**
   * Add the given string list to the listbox
   *
   * @param list the string list to add
   */
  void setStringList(const QStringList &); 


  /**
   * Add the given string list to the listbox. The list will
   * be keeped in sync with the listbox.
   *
   * @param list the string list to add
   */
  void setStringList(QStringList *); 

  /**
   * Returns the resulting list
   *
   * @return a QStringList
   */
  QStringList stringList() const;

  /**
   * Clear all. 
   */
  void clear();

  /**
   * Returns a pointer to the list box used.
   *
   * @return a QListBox pointer
   */
  QListBox *listBox() { return myListBox; };
   
  /**
   * Returns a pointer to the "add" button
   *
   * @return a QPushButton pointer
   */
  QPushButton *addButton() { return myAddButton; };

  /**
   * Returns a pointer to the "remove" button
   *
   * @return a QPushButton pointer
   */
  QPushButton *removeButton() { return myRemoveButton; };

  /**
   * Returns a pointer to the "up" button
   *
   * @return a QPushButton pointer
   */
  QPushButton *upButton() { return myUpButton; };

  /**
   * Returns a pointer to the "down" button
   *
   * @return a QPushButton pointer
   */
  QPushButton *downButton() { return myDownButton; };

public slots:
  /**
   * Enables widget if enable is TRUE, otherwise disables widget. 
   *
   * @param enable enable or disable
   */
  virtual void setEnabled(bool enable);
 

protected slots:
  /**
   * Add button pressed
   */
  void addIt();
  /**
   * Remove button pressed
   */
  void removeIt();
  /**
   * Up button pressed
   */
  void moveUp();
  /**
   * Down button pressed
   */
  void moveDown();

  /**
   * Called when an item is hilited
   */
  void itemHilited();

  /**
   * Called when the lineedit is modified
   */
  void textChanged(const QString &);

protected:
  // Methods
  void manageButtons();
  void realConstructor(class QWidget *, bool, Features);
  
  // Widgets
  QGroupBox   *myGroupBox;
  QLineEdit   *myLineEdit;
  QListBox    *myListBox;
  QPushButton *myAddButton;
  QPushButton *myRemoveButton;
  QPushButton *myUpButton;
  QPushButton *myDownButton;

  // Data
  Features    features;
  QStringList *myStringList;
};  


knu'myListManager::myListManager() (./kdenetwork/knu/mylistmanager.cpp:38)

myListManager::myListManager(QString title, 
			     QWidget *parent, 
			     const char *name, Features f)
  : QWidget(parent, name) 
{
  debug("myListManager::myListManager(\"%s\")", (const char *)title);

  QBoxLayout *topLay = new QVBoxLayout(this, 0, 0, "myListManager::topLay");
  myGroupBox = new QGroupBox(title, this, name);
  
  realConstructor(myGroupBox, true, f);
  
  topLay->addWidget(myGroupBox);
  topLay->activate();
}

/*
 * Constructor
 */

knu'myListManager::myListManager() (./kdenetwork/knu/mylistmanager.cpp:57)

myListManager::myListManager(QWidget *parent, 
			     const char *name, Features f)
  : QWidget(parent, name) 
{
  debug("myListManager::myListManager()");

  realConstructor(this, false, f);
}

/*
 * Real constructor
 */
void

knu'myListManager::realConstructor() (./kdenetwork/knu/mylistmanager.cpp:70)

myListManager::realConstructor(QWidget *topWidget, 
			       bool inGroupBox, Features f)
{
  QGridLayout *lay;
  debug("myListManager::realConstructor(QWidget=\"%s\")",
	topWidget->name());

  features = f;
  
  if (inGroupBox) {
    lay = new QGridLayout(topWidget, 5, 2, WIDGET_INTERVAL, -1,
			  "myListManager::lay");
    lay->addRowSpacing(0, WIDGET_INTERVAL/2);
  } else {
    lay = new QGridLayout(topWidget, 5, 2, 0, WIDGET_INTERVAL,
			  "myListManager::lay");
  }

  lay->setRowStretch(0, 0);
  lay->setRowStretch(1, 0);
  lay->setRowStretch(2, 10);
  lay->setRowStretch(3, 0);
  lay->setRowStretch(4, 0);

  lay->setColStretch(0, 10);
  lay->setColStretch(1, 0);

  myLineEdit = new QLineEdit(topWidget, "lineedit");
  myLineEdit->adjustSize();
  myLineEdit->setMinimumSize(myLineEdit->size());
  lay->addWidget(myLineEdit, 1, 0);

  connect(myLineEdit, SIGNAL(textChanged(const QString &)),
	  this,         SLOT(textChanged(const QString &)));
  connect(myLineEdit, SIGNAL(returnPressed()), this, SLOT(addIt()));

  myAddButton = new QPushButton(topWidget, "add_button");
  if (features & ShortLabels) {
    myAddButton->setText(i18n("+"));
  } else {
    myAddButton->setText(i18n("Add"));
  }
  myAddButton->adjustSize();
  myAddButton->setFixedSize(myAddButton->sizeHint());
  myAddButton->setEnabled(false);
  myAddButton->setFocusPolicy(QWidget::TabFocus);
  lay->addWidget(myAddButton, 1, 1);
  connect(myAddButton, SIGNAL(clicked()), this, SLOT(addIt()));

  myRemoveButton = new QPushButton(topWidget, "remove_button");
  if (features & ShortLabels) {
    myRemoveButton->setText(i18n("-"));
  } else {
    myRemoveButton->setText(i18n("Remove"));
  }

  myRemoveButton->adjustSize();
  myRemoveButton->setFixedSize(myRemoveButton->sizeHint());
  myRemoveButton->setEnabled(false);
  myRemoveButton->setFocusPolicy(QWidget::TabFocus);
  lay->addWidget(myRemoveButton, 2, 1, AlignTop);
  connect(myRemoveButton, SIGNAL(clicked()), this, SLOT(removeIt()));

  if (features & UpDownButtons) {
    myUpButton = new QPushButton(i18n("Up"), topWidget, "up_button");
    myUpButton->adjustSize();
    myUpButton->setFixedSize(myUpButton->sizeHint());
    myUpButton->setEnabled(false);
    myUpButton->setFocusPolicy(QWidget::TabFocus);
    lay->addWidget(myUpButton, 3, 1, AlignTop);
    connect(myUpButton, SIGNAL(clicked()), this, SLOT(moveUp()));
    
    myDownButton = new QPushButton(i18n("Down"), topWidget, "down_button");
    myDownButton->adjustSize();
    myDownButton->setFixedSize(myDownButton->sizeHint());
    myDownButton->setEnabled(false);
    myDownButton->setFocusPolicy(QWidget::TabFocus);
    lay->addWidget(myDownButton, 4, 1, AlignTop);
    connect(myDownButton, SIGNAL(clicked()), this, SLOT(moveDown()));
  } else {
    myUpButton = 0;
    myDownButton = 0;
  }

  myListBox = new QListBox(topWidget);
  myListBox->adjustSize();
  myListBox->setMinimumSize(myListBox->size());
  myListBox->setFocusPolicy(QWidget::TabFocus);
  lay->addMultiCellWidget(myListBox, 2, 4, 0, 0);
  //lay->addWidget(myListBox, 2, 0);

  myListBox->setMultiSelection(FALSE);
  myListBox->clearSelection();

  connect(myListBox, SIGNAL(highlighted(int)), 
	  this, SLOT(itemHilited()));

  lay->activate();

  setFocusPolicy(QWidget::StrongFocus);
  setFocusProxy(myLineEdit);

  myStringList = 0;
}

/*
 * Destructor
 */

knu'myListManager::~myListManager() (./kdenetwork/knu/mylistmanager.cpp:178)

myListManager::~myListManager() 
{
  debug("myListManager::~myListManager(%s)", name());
}


/*
 * setEnabled()
 */
void 

knu'myListManager::setEnabled() (./kdenetwork/knu/mylistmanager.cpp:188)

myListManager::setEnabled(bool a) {
  //debug("myListManager::setEnabled(%s)", (a ? "true": "false"));

  if (myGroupBox) {
    myGroupBox->setEnabled(a);
  }

  myLineEdit->setEnabled(a);
  myListBox->setEnabled(a);

  /* If we have to enable, we make a little more cleaning */
  if (a) {
     myLineEdit->setText("");
     myListBox->clearSelection();
  }

  manageButtons();
}

/*
 * setStringList
 */
void 

knu'myListManager::setStringList() (./kdenetwork/knu/mylistmanager.cpp:211)

myListManager::setStringList(const QStringList &newList) 
{
  //  debug("myListManager::setStringList(const QStringList &) [%s]", name());

  myListBox->clear();
  myLineEdit->setText("");

  for (QStringList::ConstIterator it = newList.begin(); 
       it != newList.end(); ++it) {
    myListBox->insertItem((*it).stripWhiteSpace());
  }
  myStringList = 0;
}  

/*
 * setStringList
 */
void 

knu'myListManager::setStringList() (./kdenetwork/knu/mylistmanager.cpp:229)

myListManager::setStringList(QStringList *newList) 
{
  debug("myListManager::setStringList(QStringList *) [%s]", name());

  myListBox->clear();
  myLineEdit->setText("");

  for (QStringList::ConstIterator it = newList->begin(); 
       it != newList->end(); ++it) {
    myListBox->insertItem((*it).stripWhiteSpace());
  }
  myStringList = newList;
}  

/*
 * stringList
 */
QStringList

knu'myListManager::stringList() (./kdenetwork/knu/mylistmanager.cpp:247)

myListManager::stringList() const
{
  QStringList sl;
  uint i;

  //debug("myListManager::stringList()");
  if (myStringList) {
    sl = *myStringList;
  } else {
    // Take the value in the listbox
    for (i=0; i < myListBox->count(); i++) {
      sl.append(myListBox->text(i));
    }
  }
  return sl;
}  

/*
 * addIt() - SLOT
 */
void 

knu'myListManager::addIt() (./kdenetwork/knu/mylistmanager.cpp:268)

myListManager::addIt() 
{
  int c = myListBox->currentItem();
  QString s = myLineEdit->text();

  if (! s.isEmpty()) {
    myListBox->insertItem(s, c);
    //    myListBox->clearSelection();
    myLineEdit->setText("");
  }
  if (myStringList) {
    QStringList::Iterator it;

    //debug("adding \"%s\" at position %d in myStringList [%s]", (const char *)s, c, name());
    if (c>=0) {
      it = myStringList->at(c);
      myStringList->insert(it, s);
    } else {
      myStringList->append(s);
    }
  }
  manageButtons();
}

/*
 * removeIt() - SLOT
 */
void 

knu'myListManager::removeIt() (./kdenetwork/knu/mylistmanager.cpp:296)

myListManager::removeIt() 
{
  int c = myListBox->currentItem();

  if (c >= 0) {
    myListBox->removeItem(c);
    myListBox->clearSelection();
    myListBox->setCurrentItem(c);
    if (myStringList) {
      //debug("removing position %d in myStringList [%s]", c, name());
      QStringList::Iterator it = myStringList->at(c);
      myStringList->remove(it);
    }    
  }
  manageButtons();
}

/*
 * itemHilited() - SLOT
 */
void 

knu'myListManager::itemHilited() (./kdenetwork/knu/mylistmanager.cpp:317)

myListManager::itemHilited() 
{
  manageButtons();
}

/*
 * textChanged() - SLOT
 */
void

knu'myListManager::textChanged() (./kdenetwork/knu/mylistmanager.cpp:326)

myListManager::textChanged(const QString &s)
{
  if (s.isEmpty()) {
    myAddButton->setEnabled(false);
  } else {
    myAddButton->setEnabled(true);
  }
}


/*
 * moveUp() - SLOT
 */
void

knu'myListManager::moveUp() (./kdenetwork/knu/mylistmanager.cpp:340)

myListManager::moveUp()
{
  QString string;
  int c = myListBox->currentItem();

  if (c >= 1) {
    string = myListBox->text(c);
    myListBox->setUpdatesEnabled(false);
    myListBox->removeItem(c);
    myListBox->insertItem(string, c-1);
    myListBox->setCurrentItem(c-1); 
   myListBox->setUpdatesEnabled(true);
#warning "gestion de myStringList dans moveUp"
  }
}

/*
 * moveDown() - SLOT
 */
void

knu'myListManager::moveDown() (./kdenetwork/knu/mylistmanager.cpp:360)

myListManager::moveDown()
{
  QString string;
  int c = myListBox->currentItem();
  int max = myListBox->count();

  if (c < max-1) {
    string = myListBox->text(c);
    myListBox->setUpdatesEnabled(false);
    myListBox->removeItem(c);
    myListBox->insertItem(string, c+1);
    myListBox->setCurrentItem(c+1);
    myListBox->setUpdatesEnabled(true);
#warning "gestion de myStringList dans moveDown"
  }
}

/*
 * manageButtons()
 * Set enable for buttons if we have to
 */
void 

knu'myListManager::manageButtons() (./kdenetwork/knu/mylistmanager.cpp:382)

myListManager::manageButtons() 
{
  int c;
  
  c = myListBox->currentItem();

  // Remove button
  if (c >= 0) {
    myRemoveButton->setEnabled(true);
  } else {
    myRemoveButton->setEnabled(false);
  }    

  // Add button
  if ((myLineEdit->text()).isEmpty()) {
    myAddButton->setEnabled(false);
  } else {
    myAddButton->setEnabled(true);
  }

  if (myUpButton) {
    // Up button
    if (c >= 1) {
      myUpButton->setEnabled(true);
    } else {
      myUpButton->setEnabled(false);
    }
  }
   
  if (myDownButton) {
    // Down button
    if (c < (int)myListBox->count()-1) {
      myDownButton->setEnabled(true);
    } else {
      myDownButton->setEnabled(false);
    }
  }
}