~neon/juk/master

« back to all changes in this revision

Viewing changes to categoryreaderinterface.h

  • Committer: Michael Pyne
  • Date: 2004-11-01 10:05:33 UTC
  • Revision ID: git-v1:d92239184aaf60938c41dc54d53821434cb1e400
GUI: Overhaul the file renamer configuration dialog based on a design of Scott's.  This involved a lot more code than I thought at first, but it should be pretty neat.

This also should fix wish 64849 (Add genre to file renamer) and wish 63912.
In essence this creates a dialog that has a row with each possible category, and arrows allowing you to move that category up and down.
* In the options for the category, you can control leading and trailing text, and what happens if the tag is empty.
* You can set a minimum width for the track (bug 63912).
* The dialog includes a sample result, and you can either edit the sample tag values manually, or load tags from a file to see what it would look like.
* Right now the file renamer code automatically suppresses separators between tag values that use bracketing characters, since I feel that stuff like Artist - Title - [Track] looks dumb, but that may be changed/removed later.

Suggestions are accepted: michael (dot) pyne (at) kdemail (dot) net.

BUG:63912
BUG:64849

svn path=/trunk/kdemultimedia/juk/; revision=359516

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
    begin                : Sun Oct 31 2004
 
3
    copyright            : (C) 2004 by Michael Pyne
 
4
    email                : michael.pyne@kdemail.net
 
5
***************************************************************************/
 
6
 
 
7
/***************************************************************************
 
8
 *                                                                         *
 
9
 *   This program is free software; you can redistribute it and/or modify  *
 
10
 *   it under the terms of the GNU General Public License as published by  *
 
11
 *   the Free Software Foundation; either version 2 of the License, or     *
 
12
 *   (at your option) any later version.                                   *
 
13
 *                                                                         *
 
14
 ***************************************************************************/
 
15
 
 
16
#ifndef JUK_CATEGORYREADERINTERFACE_H
 
17
#define JUK_CATEGORYREADERINTERFACE_H
 
18
 
 
19
#include "tagrenameroptions.h"
 
20
 
 
21
class QString;
 
22
 
 
23
template<class T> class QValueList;
 
24
 
 
25
/**
 
26
 * This class is used to map categories into values.  You should implement the
 
27
 * functionality in a subclass.
 
28
 *
 
29
 * @author Michael Pyne <michael.pyne@kdemail.net>
 
30
 */
 
31
class CategoryReaderInterface
 
32
{
 
33
public:
 
34
    virtual ~CategoryReaderInterface() { }
 
35
 
 
36
/**
 
37
 * Returns the textual representation of \p type, without any processing done
 
38
 * on it.  For example, track values shouldn't be expanded out to the minimum
 
39
 * width from this function.
 
40
 *
 
41
 * @param category to retrieve the value of.
 
42
 * @return textual representation of that category's value.
 
43
 */
 
44
    virtual QString categoryValue(TagType type) const = 0;
 
45
 
 
46
/**
 
47
 * Returns the user-specified prefix string for \p category.
 
48
 *
 
49
 * @param category the category to retrieve the value for.
 
50
 * @return user-specified prefix string for \p category.
 
51
 */
 
52
    virtual QString prefix(TagType category) const = 0;
 
53
 
 
54
/**
 
55
 * Returns the user-specified suffix string for \p category.
 
56
 *
 
57
 * @param category the category to retrieve the value for.
 
58
 * @return user-specified suffix string for \p category.
 
59
 */
 
60
    virtual QString suffix(TagType category) const = 0;
 
61
 
 
62
/**
 
63
 * Returns the user-specified empty action for \p category.
 
64
 *
 
65
 * @param category the category to retrieve the value for.
 
66
 * @return user-specified empty action for \p category.
 
67
 */
 
68
    virtual TagRenamerOptions::EmptyActions emptyAction(TagType category) const = 0;
 
69
 
 
70
/**
 
71
 * Returns the user-specified empty text for \p category.  This text might
 
72
 * be used to replace an empty value.
 
73
 *
 
74
 * @param category the category to retrieve the value for.
 
75
 * @return the user-specified empty text for \p category.
 
76
 */
 
77
    virtual QString emptyText(TagType category) const = 0;
 
78
 
 
79
    virtual QValueList<TagType> categoryOrder() const = 0;
 
80
 
 
81
    // You probably shouldn't reimplement this
 
82
    virtual QString value(TagType category) const;
 
83
 
 
84
    virtual QString separator() const = 0;
 
85
 
 
86
    virtual QString musicDirectory() const = 0;
 
87
 
 
88
    virtual int trackWidth() const = 0;
 
89
 
 
90
    virtual bool hasDirSeparator(int index) const = 0;
 
91
 
 
92
    virtual bool isDisabled(TagType category) const = 0;
 
93
 
 
94
    // You probably shouldn't reimplement this
 
95
    virtual bool isRequired(TagType category) const;
 
96
 
 
97
    // You probably shouldn't reimplement this
 
98
    virtual bool isEmpty(TagType category) const;
 
99
};
 
100
 
 
101
#endif /* JUK_CATEGORYREADERINTERFACE_H */
 
102
 
 
103
// vim: set et sw=4 ts=4: