kwave  18.07.70
Kwave::FileInfoPlugin Class Reference

#include <FileInfoPlugin.h>

Inheritance diagram for Kwave::FileInfoPlugin:
Inheritance graph
Collaboration diagram for Kwave::FileInfoPlugin:
Collaboration graph

Public Member Functions

 FileInfoPlugin (QObject *parent, const QVariantList &args)
 
virtual ~FileInfoPlugin () Q_DECL_OVERRIDE
 
virtual QStringList * setup (QStringList &) Q_DECL_OVERRIDE
 
- Public Member Functions inherited from Kwave::Plugin
 Plugin (QObject *parent, const QVariantList &args)
 
virtual ~Plugin () Q_DECL_OVERRIDE
 
virtual QString name () const
 
virtual QString description () const
 
virtual QString progressText ()
 
virtual bool canClose () const
 
bool isRunning () const
 
bool shouldStop () const
 
virtual void load (QStringList &params)
 
virtual void unload ()
 
virtual int start (QStringList &params)
 
virtual int stop ()
 
virtual void run (QStringList params)
 
Kwave::PluginManagermanager () const
 
Kwave::SignalManagersignalManager ()
 
QWidget * parentWidget () const
 
QString signalName ()
 
virtual sample_index_t signalLength ()
 
virtual double signalRate ()
 
virtual const QList< unsigned int > selectedTracks ()
 
virtual sample_index_t selection (QList< unsigned int > *tracks=Q_NULLPTR, sample_index_t *left=Q_NULLPTR, sample_index_t *right=Q_NULLPTR, bool expand_if_empty=false)
 
virtual void selectRange (sample_index_t offset, sample_index_t length)
 
virtual void migrateToActiveContext ()
 
- Public Member Functions inherited from Kwave::Runnable
virtual ~Runnable ()
 

Protected Member Functions

void apply (Kwave::FileInfo &new_info)
 
- Protected Member Functions inherited from Kwave::Plugin
int execute (QStringList &params)
 
void emitCommand (const QString &command)
 
void use ()
 
void setPluginManager (Kwave::PluginManager *new_plugin_manager)
 
virtual void run_wrapper (const QVariant &params) Q_DECL_OVERRIDE
 

Additional Inherited Members

- Public Slots inherited from Kwave::Plugin
virtual void setProgressDialogEnabled (bool enable)
 
virtual void updateProgress (qreal progress)
 
virtual void cancel ()
 
virtual void close ()
 
void release ()
 
- Signals inherited from Kwave::Plugin
void sigRunning (Kwave::Plugin *plugin)
 
void sigDone (Kwave::Plugin *plugin)
 
void sigClosed (Kwave::Plugin *p)
 
void sigCommand (const QString &command)
 
void setProgressText (const QString &text)
 

Detailed Description

Definition at line 27 of file FileInfoPlugin.h.

Constructor & Destructor Documentation

◆ FileInfoPlugin()

Kwave::FileInfoPlugin::FileInfoPlugin ( QObject *  parent,
const QVariantList &  args 
)

Constructor

Parameters
parentreference to our plugin manager
argsargument list [unused]

Definition at line 32 of file FileInfoPlugin.cpp.

34  :Kwave::Plugin(parent, args)
35 {
36 }

◆ ~FileInfoPlugin()

Kwave::FileInfoPlugin::~FileInfoPlugin ( )
virtual

virtual Destructor

Definition at line 39 of file FileInfoPlugin.cpp.

40 {
41 }

Member Function Documentation

◆ apply()

void Kwave::FileInfoPlugin::apply ( Kwave::FileInfo new_info)
protected

Applies the new settings

Definition at line 70 of file FileInfoPlugin.cpp.

References _, Kwave::Plugin::emitCommand(), Kwave::Plugin::parentWidget(), Kwave::MessageBox::questionYesNoCancel(), Kwave::FileInfo::rate(), Kwave::SignalManager::setFileInfo(), Kwave::FileInfo::setRate(), and Kwave::Plugin::signalManager().

Referenced by setup().

71 {
72  Kwave::FileInfo old_info(signalManager().metaData());
73  if (old_info == new_info) return; // nothing to do
74 
75  /* sample rate */
76  if (!qFuzzyCompare(old_info.rate(), new_info.rate())) {
77 
78  // sample rate changed -> only change rate or resample ?
79  double new_rate = new_info.rate();
81  i18n("You have changed the sample rate. Do you want to convert "
82  "the whole file to the new sample rate or do "
83  "you only want to set the rate information in order "
84  "to repair a damaged file? Note: changing only the sample "
85  "rate can cause \"mickey mouse\" effects."),
86  QString(),
87  i18n("&Convert"),
88  i18n("&Set Rate"));
89  if (res == KMessageBox::Yes) {
90  // Yes -> resample
91 
92  // take over all properties except the new sample rate, this will
93  // be detected and changed in the sample rate plugin
94  new_info.setRate(old_info.rate());
95  if (new_info != old_info) {
96  signalManager().setFileInfo(new_info, true);
97  } // else: nothing except sample rate changed
98 
99  // NOTE: this command could be executed asynchronously, thus
100  // we cannot change the sample rate afterwards
101  emitCommand(_("plugin:execute(samplerate,%1,all)").arg(new_rate));
102  return;
103  } else if (res == KMessageBox::No) {
104  // No -> only change the rate in the file info
105  new_info.setRate(new_rate);
106  } else {
107  // canceled -> use old sample rate
108  new_info.setRate(old_info.rate());
109  }
110  }
111 
112  // just copy all other properties
113  if (new_info != old_info) {
114  signalManager().setFileInfo(new_info, true);
115  }
116 }
void emitCommand(const QString &command)
Definition: Plugin.cpp:510
static int questionYesNoCancel(QWidget *widget, QString message, QString caption=QString(), const QString buttonYes=QString(), const QString buttonNo=QString(), const QString &dontAskAgainName=QString())
Definition: MessageBox.cpp:74
double rate() const
Definition: FileInfo.cpp:415
QWidget * parentWidget() const
Definition: Plugin.cpp:450
Kwave::SignalManager & signalManager()
Definition: Plugin.cpp:444
void setRate(double rate)
Definition: FileInfo.cpp:424
void setFileInfo(const Kwave::FileInfo &new_info, bool with_undo)
#define _(m)
Definition: memcpy.c:66
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setup()

QStringList * Kwave::FileInfoPlugin::setup ( QStringList &  )
virtual

Shows a dialog for editing file properties.

See also
Kwave::Plugin::setup

Reimplemented from Kwave::Plugin.

Definition at line 44 of file FileInfoPlugin.cpp.

References apply(), Kwave::FileInfoDialog::info(), Kwave::Plugin::parentWidget(), and Kwave::Plugin::signalManager().

45 {
46  Kwave::FileInfo oldInfo(signalManager().metaData());
47 
48  // create the setup dialog
49  Kwave::FileInfoDialog *dialog =
50  new Kwave::FileInfoDialog(parentWidget(), oldInfo);
51  Q_ASSERT(dialog);
52  if (!dialog) return Q_NULLPTR;
53 
54  QStringList *list = new QStringList();
55  Q_ASSERT(list);
56  if (list && dialog->exec()) {
57  // user has pressed "OK" -> apply the new properties
58  apply(dialog->info());
59  } else {
60  // user pressed "Cancel"
61  if (list) delete list;
62  list = Q_NULLPTR;
63  }
64 
65  if (dialog) delete dialog;
66  return list;
67 }
QWidget * parentWidget() const
Definition: Plugin.cpp:450
Kwave::SignalManager & signalManager()
Definition: Plugin.cpp:444
void apply(Kwave::FileInfo &new_info)
Kwave::FileInfo & info()
Here is the call graph for this function:

The documentation for this class was generated from the following files: