symbols example removed, thumbnails example ( showing QskScrollArea +

flicking ) instead
This commit is contained in:
Uwe Rathmann 2017-07-27 08:26:23 +02:00
parent ec5521ab3e
commit 59f2e7c808
6 changed files with 141 additions and 166 deletions

View File

@ -1,66 +0,0 @@
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the 3-clause BSD License
*****************************************************************************/
#include <QskAspect.h>
#include <QskPushButton.h>
#include <QskCorner.h>
#include <QskGraphic.h>
#include <QskObjectCounter.h>
#include <SkinnyShapeFactory.h>
#include "ButtonBox.h"
ButtonBox::ButtonBox( QQuickItem* parent ):
QskLinearBox( parent )
{
setDimension( 3 );
setMargins( 5 );
insertButton( "RoyalBlue", SkinnyShapeFactory::Rectangle );
insertButton( "IndianRed", SkinnyShapeFactory::Ellipse );
insertButton( "DarkOliveGreen", SkinnyShapeFactory::Ring );
insertButton( "SandyBrown", SkinnyShapeFactory::TriangleDown );
insertButton( "DarkViolet", SkinnyShapeFactory::Star );
insertButton( "DarkSlateGray", SkinnyShapeFactory::Hexagon );
itemAtIndex( 0 )->setFocus( true );
}
ButtonBox::~ButtonBox()
{
}
void ButtonBox::insertButton( const QColor& color, SkinnyShapeFactory::Shape shape )
{
QskGraphic graphic;
QPen pen( Qt::black, 3 );
pen.setJoinStyle( Qt::MiterJoin );
pen.setCosmetic( true );
QPainter painter( &graphic );
painter.setRenderHint( QPainter::Antialiasing, true );
painter.setPen( pen );
painter.setBrush( color );
painter.drawPath( SkinnyShapeFactory::shapePath( shape, QSizeF( 40, 40 ) ) );
painter.end();
QskPushButton* button = new QskPushButton( this );
button->setObjectName( QString( "Shape %1" ).arg( int( shape ) ) );
button->setGraphic( graphic );
button->setMetric( QskPushButton::Panel | QskAspect::Border, 3 );
//button->setCorner( QskCorner( Qt::RelativeSize, 100 ) );
button->setSizePolicy( QskSizePolicy::MinimumExpanding,
QskSizePolicy::MinimumExpanding );
connect( button, SIGNAL( clicked() ), SLOT( onButtonClick() ) );
}
void ButtonBox::onButtonClick()
{
delete sender();
}
#include "moc_ButtonBox.cpp"

View File

@ -1,27 +0,0 @@
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the 3-clause BSD License
*****************************************************************************/
#ifndef _BUTTON_BOX_H_
#define _BUTTON_BOX_H_
#include <QskLinearBox.h>
#include <SkinnyShapeFactory.h>
class ButtonBox : public QskLinearBox
{
Q_OBJECT
public:
ButtonBox( QQuickItem* parent = nullptr );
virtual ~ButtonBox();
public Q_SLOTS:
void onButtonClick();
private:
void insertButton( const QColor&, SkinnyShapeFactory::Shape );
};
#endif

View File

@ -1,60 +0,0 @@
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the 3-clause BSD License
*****************************************************************************/
#include "ButtonBox.h"
#include <SkinnyFont.h>
#include <SkinnyShortcut.h>
#include <QskAspect.h>
#include <QskWindow.h>
#include <QskPushButton.h>
#include <QskLinearBox.h>
#include <QskFocusIndicator.h>
#include <QskObjectCounter.h>
#include <QGuiApplication>
int main( int argc, char* argv[] )
{
#ifdef ITEM_STATISTICS
QskObjectCounter counter( true );
#endif
QGuiApplication app( argc, argv );
SkinnyFont::init( &app );
SkinnyShortcut::enable( SkinnyShortcut::AllShortcuts );
auto box = new ButtonBox();
box->setObjectName( "ButtonBox" );
auto button = new QskPushButton( "Check Me" );
button->setObjectName( "CheckMe" );
button->setSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Fixed );
button->setCheckable( true );
button->setChecked( true );
QObject::connect( button, SIGNAL( toggled( bool ) ),
box, SLOT( setVisible( bool ) ) );
auto layoutBox = new QskLinearBox( Qt::Horizontal );
layoutBox->setObjectName( "MainLayout" );
layoutBox->setMargins( 5 );
layoutBox->addItem( button );
layoutBox->addItem( box );
auto focusIndicator = new QskFocusIndicator();
focusIndicator->setObjectName( "FocusIndicator" );
focusIndicator->setColor( QskFocusIndicator::Panel | QskAspect::Border, Qt::darkBlue );
QskWindow window;
window.resize( 600, 400 );
window.addItem( layoutBox );
window.addItem( focusIndicator );
window.show();
return app.exec();
}

View File

@ -1,13 +0,0 @@
include( $${PWD}/../examples.pri )
TARGET = symbols
QT += quick quick-private
CONFIG += no_private_qt_headers_warning
HEADERS += \
ButtonBox.h
SOURCES += \
ButtonBox.cpp \
main.cpp

View File

@ -0,0 +1,135 @@
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the 3-clause BSD License
*****************************************************************************/
#include <SkinnyShortcut.h>
#include <SkinnyShapeFactory.h>
#include <QskScrollArea.h>
#include <QskWindow.h>
#include <QskGraphicLabel.h>
#include <QskLinearBox.h>
#include <QskObjectCounter.h>
#include <QskGraphic.h>
#include <QGuiApplication>
#include <QPainter>
const int gridSize = 20;
const int thumbnailSize = 150;
static QColor randomColor()
{
static const char* colors[] =
{
"HotPink",
"MediumVioletRed",
"FireBrick",
"PeachPuff",
"Gold",
"RosyBrown",
"Maroon",
"Turquoise",
"CadetBlue",
"Teal",
"LightSteelBlue",
"CornflowerBlue",
"Thistle",
"Plum",
"DarkViolet",
"DarkSlateBlue",
"AntiqueWhite",
"MistyRose",
"Silver",
"DarkSlateGray"
};
const int index = qrand() % ( sizeof( colors ) / sizeof( colors[0] ) );
return QColor( colors[ index ] );
}
static int randomShape()
{
return qrand() % SkinnyShapeFactory::ShapeCount;
}
class Thumbnail : public QskGraphicLabel
{
public:
Thumbnail( const QColor& color, int shape, QQuickItem* parentItem ):
QskGraphicLabel( parentItem )
{
using namespace SkinnyShapeFactory;
const QSizeF size( thumbnailSize, thumbnailSize );
QskGraphic graphic;
QPen pen( Qt::black, 3 );
pen.setJoinStyle( Qt::MiterJoin );
pen.setCosmetic( true );
QPainter painter( &graphic );
painter.setRenderHint( QPainter::Antialiasing, true );
painter.setPen( pen );
painter.setBrush( color );
painter.drawPath( shapePath( static_cast< Shape >( shape ), size ) );
painter.end();
setGraphic( graphic );
setFixedSize( size );
}
};
class IconGrid : public QskLinearBox
{
public:
IconGrid( QQuickItem* parentItem = nullptr ):
QskLinearBox( Qt::Horizontal, gridSize, parentItem )
{
setMargins( 20 );
setSpacing( 20 );
for ( int col = 0; col < gridSize; col++ )
{
for ( int row = 0; row < gridSize; row++ )
(void) new Thumbnail( randomColor(), randomShape(), this );
}
}
};
int main( int argc, char* argv[] )
{
#ifdef ITEM_STATISTICS
QskObjectCounter counter( true );
#endif
QGuiApplication app( argc, argv );
SkinnyShortcut::enable( SkinnyShortcut::AllShortcuts );
/*
In a real world application a thumbnail viewer would probably implemented
with QskScrollView using scene graph node composition - like done
in QskListView.
This example also shows, that blocking of the scene graph node creation
( QskControl::DeferredUpdate + QskControl::CleanupOnVisibility )
could be extended to respect being inside the window or a clip region.
But here we only want to demonstrate how QskScrollArea works.
*/
auto scrollArea = new QskScrollArea();
scrollArea->setScrolledItem( new IconGrid() );
QskWindow window;
window.resize( 600, 600 );
window.addItem( scrollArea );
window.show();
return app.exec();
}

View File

@ -0,0 +1,6 @@
include( $${PWD}/../examples.pri )
TARGET = thumbnails
SOURCES += \
main.cpp