1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
/* This file is part of the KDE project
Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
Copyright (c) 2007 Jan Hambrecht <jaham@gmx.net>
Copyright (c) 2007 Sven Langkamp <sven.langkamp@gmail.com>
Copyright (c) 2010 Boudewijn Rempt <boud@valdyas.org>
Copyright (C) 2011 Srikanth Tiyyagura <srikanth.tulasiram@gmail.com>
Copyright (c) 2011 José Luis Vergara <pentalis@gmail.com>
Copyright (c) 2013 Sascha Suelzer <s.suelzer@gmail.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef KO_RESOURCE_ITEM_CHOOSER
#define KO_RESOURCE_ITEM_CHOOSER
#include <QWidget>
#include "kowidgets_export.h"
class QModelIndex;
class QAbstractProxyModel;
class QAbstractItemDelegate;
class QAbstractButton;
class QToolButton;
class KoAbstractResourceServerAdapter;
class KoResourceItemView;
class KoResource;
/**
* A widget that contains a KoResourceChooser as well
* as an import/export button
*/
class KOWIDGETS_EXPORT KoResourceItemChooser : public QWidget
{
Q_OBJECT
public:
enum Buttons { Button_Import, Button_Remove, Button_GhnsDownload, Button_GhnsUpload };
/// \p usePreview shows the aside preview with the resource's image
explicit KoResourceItemChooser(QSharedPointer<KoAbstractResourceServerAdapter> resourceAdapter, QWidget *parent = 0, bool usePreview = false);
~KoResourceItemChooser();
/// Sets number of columns in the view and causes the number of rows to be calculated accordingly
void setColumnCount(int columnCount);
/// Sets number of rows in the view and causes the number of columns to be calculated accordingly
void setRowCount(int rowCount);
/// Sets the height of the view rows
void setRowHeight(int rowHeight);
/// Sets the width of the view columns
void setColumnWidth(int columnWidth);
/// Sets a custom delegate for the view
void setItemDelegate(QAbstractItemDelegate *delegate);
/// Gets the currently selected resource
/// @returns the selected resource, 0 is no resource is selected
KoResource *currentResource() const;
/// Sets the item representing the resource as selected
void setCurrentResource(KoResource *resource);
/**
* Sets the sected resource, does nothing if there is no valid item
* @param row row of the item
* @param column column of the item
*/
void setCurrentItem(int row, int column);
void showButtons(bool show);
void addCustomButton(QAbstractButton *button, int cell);
/// determines whether the preview right or below the splitter
void setPreviewOrientation(Qt::Orientation orientation);
/// determines whether the preview should tile the resource's image or not
void setPreviewTiled(bool tiled);
/// shows the preview converted to grayscale
void setGrayscalePreview(bool grayscale);
void showGetHotNewStuff(bool showDownload, bool showUpload);
/// sets the visibilty of tagging KlineEdits.
void showTaggingBar(bool show);
///Set a proxy model with will be used to filter the resources
void setProxyModel(QAbstractProxyModel *proxyModel);
void setKnsrcFile(const QString &knsrcFileArg);
QSize viewSize() const;
KoResourceItemView *itemView() const;
void setViewModeButtonVisible(bool visible);
QToolButton *viewModeButton() const;
void setSynced(bool sync);
virtual bool eventFilter(QObject *object, QEvent *event);
Q_SIGNALS:
/// Emitted when a resource was selected
void resourceSelected(KoResource *resource);
void splitterMoved();
public Q_SLOTS:
void slotButtonClicked(int button);
private Q_SLOTS:
void activated(const QModelIndex &index);
void contextMenuRequested(const QPoint &pos);
void baseLengthChanged(int length);
void slotBeforeResourcesLayoutReset(KoResource *activateAfterReset);
void slotAfterResourcesLayoutReset();
void updateView();
protected:
virtual void showEvent(QShowEvent *event);
private:
void updateButtonState();
void updatePreview(KoResource *resource);
virtual void resizeEvent(QResizeEvent *event);
/// Resource for a given model index
/// @returns the resource pointer, 0 is index not valid
KoResource *resourceFromModelIndex(const QModelIndex &index) const;
class Private;
Private *const d;
};
#endif // KO_RESOURCE_ITEM_CHOOSER
|