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

Class Index

katalog'MainView (./kdegraphics/katalog/mainview.h:19)

class MainView : public QScrollView 
{
  Q_OBJECT
  int newX;
  int newY;
  int mRowSize;
  
  Catalog *mCatalog;
public:
  MainView(QWidget * parent=0, const char *name = 0);
  ~MainView();

  /**
   * Catalog
   **/ 
public:
  Catalog *catalog() { return mCatalog; }
  void setCatalog( Catalog *catalog);
public slots:
  void resetCatalog();  

  /**
   * Items
   **/
public:
  void initItems();
  void layoutItems();
  void updateView();
public slots:
  void addItem(Item* newItem);  
  void removeItem(Item *oldItem);

public:
  bool addImage(const KURL &, bool checkForDir = true);
  bool addImage(const QImage &);

protected:
  ItemViewList *mViewList;
  int mColCount;
};

katalog'MainView::MainView() (./kdegraphics/katalog/mainview.cpp:20)

MainView::MainView(QWidget *parent, const char *name)
 : QScrollView(parent, name), mCatalog(0)
{
   setResizePolicy(Manual);
   int h = 0;
   int w = 0;
   newX = 0;
   newY = 0;
   mRowSize = 3;
   mColCount = 0;
   mViewList = new ItemViewList();
   resizeContents(w,h);
   enableClipper(true);

   viewport()->setBackgroundPixmap(UserIcon("katalog_bg"));
   setMinimumSize(200,200);
}


katalog'MainView::~MainView() (./kdegraphics/katalog/mainview.cpp:38)

MainView::~MainView()
{
   delete mViewList;
}

void 

katalog'MainView::resetCatalog() (./kdegraphics/katalog/mainview.cpp:44)

MainView::resetCatalog()
{
   if (!mCatalog)
      return;
   disconnect(mCatalog, 0, this, 0);
   mCatalog = 0;
   mViewList->deleteAll();
   newX = 0;
   newY = 0; 
   resizeContents(0,0);
}

void 

katalog'MainView::setCatalog() (./kdegraphics/katalog/mainview.cpp:57)

MainView::setCatalog( Catalog *catalog) 
{ 
   resetCatalog(); 
   mCatalog = catalog; 
   connect(mCatalog, SIGNAL(destroyed()), this, SLOT(resetCatalog()));
   connect(mCatalog, SIGNAL(itemAdded(Item *)), this, SLOT(addItem(Item *)));
   connect(mCatalog, SIGNAL(itemRemoved(Item *)), this, SLOT(removeItem(Item *)));
   initItems();
}

void

katalog'MainView::initItems() (./kdegraphics/katalog/mainview.cpp:68)

MainView::initItems()
{
   // Add all items to the view
   for(Item *item = mCatalog->items()->first();
       item;
       item = mCatalog->items()->next())
   {
       ItemView *itemView = new ItemView(viewport(), item);   
       mViewList->append(itemView);
   }
   layoutItems();
}

void

katalog'MainView::updateView() (./kdegraphics/katalog/mainview.cpp:82)

MainView::updateView()
{
   setUpdatesEnabled(false);
   layoutItems();
   setUpdatesEnabled(true);
   repaint();
}

void 

katalog'MainView::layoutItems() (./kdegraphics/katalog/mainview.cpp:91)

MainView::layoutItems()
{
   mColCount = 0;
   mRowSize = 0; // mRowSize;
   newX = 0;
   newY = 0;

   int h = 0;
   int w = 0;

   for(ItemView *itemView = mViewList->first();
       itemView;
       itemView = mViewList->next())
   {
      if (mColCount == mRowSize)
      {   
         newY = h;
         newX = 0;
         mColCount = 0;
      }

printf("newX = %d, newY = %d\n", newX, newY);
      addChild(itemView, newX, newY);
      itemView->autoSize();
      itemView->show();
      h = QMAX(newY + itemView->height(), h);
      w = QMAX(newX + itemView->width(), w);
      if (mRowSize == 0)
      {
         mRowSize = 1;
         if (itemView->width())
         {
            mRowSize = visibleWidth() / itemView->width();
            if (!mRowSize)
               mRowSize = 1;
         }    
      }
      
      newX += itemView->width();
      mColCount++;
   }
printf("Width = %d, heigth = %d\n", w, h);
   resizeContents(w,h);
}

void

katalog'MainView::addItem() (./kdegraphics/katalog/mainview.cpp:137)

MainView::addItem(Item *newItem)
{
   if (mColCount == mRowSize)
   {
      newY = contentsHeight();
      newX = 0;
      mColCount = 0;
   }

   ItemView *itemView = new ItemView(viewport(), newItem);   
   mViewList->append(itemView);
printf("newX = %d, newY = %d\n", newX, newY);
   addChild(itemView, newX, newY);
   int h = QMAX(newY + itemView->height(), contentsHeight());
   int w = QMAX(newX + itemView->width(), contentsWidth());
    
   newX += itemView->width();
   mColCount++;

printf("Width = %d, heigth = %d\n", w, h);
   resizeContents(w,h);
   itemView->show();
}

void

katalog'MainView::removeItem() (./kdegraphics/katalog/mainview.cpp:162)

MainView::removeItem(Item *oldItem)
{
   for(ItemView *itemView = mViewList->first();
       itemView;
       itemView = mViewList->next())
   {
       if (itemView->item() == oldItem)
       {
          mViewList->remove();
          delete itemView;
          break;
       }
   }
   // Update layout...
   layoutItems();
}


bool

katalog'MainView::addImage() (./kdegraphics/katalog/mainview.cpp:181)

MainView::addImage(const KURL &location, bool checkForDir)
{
printf("AddImage(%s, %s)\n",
	location.url().ascii(), checkForDir ? "true" : "false");
   if (!mCatalog)
   {
       setCatalog(new Catalog());
   }
   if (checkForDir && location.isLocalFile())
   {
      QString path = location.path(1); // Add trailing '/'
printf("Check for dir, path = %s\n", path.ascii());
      QDir localDir(path, QString::null, QDir::IgnoreCase, QDir::Files );
      if (localDir.exists())
      {
          bool result = false;
          QStringList dirList = localDir.entryList();
          for ( QStringList::Iterator it = dirList.begin(); 
                it != dirList.end(); 
                ++it )
          {
             KURL file(location);
             file.setPath(path+ (*it));
             if (addImage(file, false))
                result = true;
          }
          return result;
      }
   }

printf("addImage\n");
   Item *item = new Item(TN_SIZE);
   if (!item->loadImage(location))
   {
printf("Error loading image.\n");
      delete item;
      return false;
   }
printf("Loading OK.\n");
   mCatalog->addItem(item);
   return true;
}


bool

katalog'MainView::addImage() (./kdegraphics/katalog/mainview.cpp:226)

MainView::addImage(const QImage &img)
{
   if (!mCatalog)
   {
       setCatalog(new Catalog());
   }
printf("addImage\n");
   Item *item = new Item(TN_SIZE);
   if (!item->setImage(img))
   {
printf("Error setting image.\n");
      delete item;
      return false;
   }
printf("Loading OK.\n");
   mCatalog->addItem(item);
   return true;
}