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;
}