okular/core/textdocumentsettings.h
2017-03-02 20:09:32 +01:00

128 lines
3.3 KiB
C++

/***************************************************************************
* Copyright (C) 2013 by Azat Khuzhin <a3at.mail@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#ifndef _OKULAR_TEXTDOCUMENTSETTINGS_H_
#define _OKULAR_TEXTDOCUMENTSETTINGS_H_
#include "okularcore_export.h"
#include <QFont>
#include <QWidget>
#include <QObject>
#include <KConfigSkeleton>
namespace Okular {
class TextDocumentSettingsWidgetPrivate;
class TextDocumentSettingsPrivate;
/**
* Here is example of how you can add custom settings per-backend:
*
* In .h header:
* {code}
* class KIntSpinBox;
* ...
*
* class YourGenerator
* {
* ...
* public:
* bool reparseConfig();
* void addPages( KConfigDialog* dlg );
* ...
* private:
* QString customArgument;
* KIntSpinBox *customArgumentWidget;
* ...
* }
* {/code}
*
* In .cpp module:
* {code}
* #include <KIntSpinBox>
* ...
* bool YourGenerator::reparseConfig()
* {
* ... Do something with customArgumentWidget and customArgument ...
* }
* void YourGenerator::addPages( KConfigDialog* dlg )
* {
* Okular::TextDocumentSettingsWidget *widget = new Okular::TextDocumentSettingsWidget();
*
* KIntSpinBox *customArgumentWidget = new KIntSpinBox( dlg );
* customArgumentWidget->setObjectName( QString::fromUtf8( "kcfg_CustomArgument" ) );
* widget->addRow( "Custom argument", customArgumentWidget );
*
* Okular::TextDocumentSettings *settings = generalSettings();
* settings->addItemString( "CustomArgument", customArgument );
*
* dlg->addPage( widget, settings, ... );
* }
* {/code}
*/
/**
* TextDocumentSettingsWidget
*
* Contain default settings for text based documents.
* (all generators that inherited from TextDocumentGenerator)
* Generator can add settings to this object individually.
*
* @since 0.17 (KDE 4.11)
*/
class OKULARCORE_EXPORT TextDocumentSettingsWidget : public QWidget
{
Q_OBJECT
public:
TextDocumentSettingsWidget( QWidget *parent = nullptr );
virtual ~TextDocumentSettingsWidget();
void addRow( const QString& labelText, QWidget *widget );
private:
friend class TextDocumentGenerator;
TextDocumentSettingsWidgetPrivate *d_ptr;
Q_DECLARE_PRIVATE( TextDocumentSettingsWidget )
Q_DISABLE_COPY( TextDocumentSettingsWidget )
};
/**
* TextDocumentSettings
*
* Contain default settings/config skeleton
* To save/restore settings.
*
* @since 0.17 (KDE 4.11)
*/
class OKULARCORE_EXPORT TextDocumentSettings : public KConfigSkeleton
{
Q_OBJECT
public:
QFont font() const;
private:
friend class TextDocumentGenerator;
TextDocumentSettings( const QString& config, QObject *parent );
TextDocumentSettingsPrivate *d_ptr;
Q_DECLARE_PRIVATE( TextDocumentSettings )
Q_DISABLE_COPY( TextDocumentSettings )
};
}
#endif