~ubuntu-branches/ubuntu/karmic/kid3/karmic

« back to all changes in this revision

Viewing changes to kid3/frametable.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Patrick Matthäi
  • Date: 2009-05-20 16:12:30 UTC
  • mfrom: (1.2.3 upstream)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: james.westby@ubuntu.com-20090520161230-qetp532r8ydujkz2
Tags: upstream-1.2
Import upstream version 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
#include <QHeaderView>
33
33
#include <QKeyEvent>
34
34
#include <QItemDelegate>
 
35
#include <QApplication>
35
36
#endif
36
37
 
37
38
/** Column indices. */
312
313
 
313
314
#else
314
315
 
 
316
/** QCheckTableItem with control of background color. */
 
317
class NameTableItem : public QCheckTableItem {
 
318
public:
 
319
        /**
 
320
         * Constructor.
 
321
         * @param table table
 
322
         * @param text  text
 
323
         */
 
324
        NameTableItem(QTable* table, const QString& text) :
 
325
                QCheckTableItem(table, text), m_colored(false) {}
 
326
 
 
327
        /**
 
328
         * Destructor.
 
329
         */
 
330
        virtual ~NameTableItem();
 
331
 
 
332
        /**
 
333
         * Set background colored.
 
334
         * @param en true to enable
 
335
         */
 
336
        void setBackgroundColored(bool en) { m_colored = en; }
 
337
 
 
338
        /**
 
339
         * Paint item.
 
340
         *
 
341
         * @param p        painter
 
342
         * @param cg       color group
 
343
         * @param cr       rectangle
 
344
         * @param selected true if highlighted
 
345
         */
 
346
        virtual void paint(QPainter* p, const QColorGroup& cg, const QRect& cr,
 
347
                                                                                 bool selected);
 
348
 
 
349
private:
 
350
        bool m_colored;
 
351
};
 
352
 
 
353
/**
 
354
 * Destructor.
 
355
 */
 
356
NameTableItem::~NameTableItem() {}
 
357
 
 
358
/**
 
359
 * Paint item.
 
360
 *
 
361
 * @param p        painter
 
362
 * @param cg       color group
 
363
 * @param cr       rectangle
 
364
 * @param selected true if highlighted
 
365
 */
 
366
void NameTableItem::paint(QPainter* p, const QColorGroup& cg, const QRect& cr,
 
367
                                                                                                        bool selected)
 
368
{
 
369
        QColorGroup g(cg);
 
370
        if (m_colored) {
 
371
                g.setColor(QColorGroup::Base, cg.mid());
 
372
        }
 
373
        QCheckTableItem::paint(p, g, cr, selected);
 
374
}
 
375
 
 
376
 
315
377
/** QTableItem subclass to align everything (also numbers) left. */
316
378
class ValueTableItem : public QTableItem {
317
379
public:
664
726
#if QT_VERSION >= 0x040000
665
727
FrameTable::FrameTable(QWidget* parent, bool id3v1) :
666
728
        QTableWidget(parent), m_cursorRow(-1), m_cursorColumn(-1),
667
 
        m_markedRows(0), m_setCheckBoxes(true), m_id3v1(id3v1)
 
729
        m_markedRows(0), m_changedFrames(0), m_setCheckBoxes(true), m_id3v1(id3v1)
668
730
{
669
731
        setColumnCount(CI_NumColumns);
670
732
        setSelectionMode(SingleSelection);
675
737
        if (id3v1) {
676
738
                setMinimumHeight((Frame::FT_LastV1Frame + 1) * (rowHeight(0) + 1));
677
739
        }
678
 
        QTableWidgetItem* twi = new QTableWidgetItem(i18n("Track Number"));
 
740
        QTableWidgetItem* twi = new QTableWidgetItem(i18n("Track Number") + "WW");
679
741
        twi->setCheckState(Qt::Unchecked);
680
742
        setItem(0, CI_Enable, twi);
681
743
        resizeColumnToContents(CI_Enable);
687
749
#else
688
750
FrameTable::FrameTable(QWidget* parent, bool id3v1) :
689
751
        QTable(parent), m_cursorRow(-1), m_cursorColumn(-1),
690
 
        m_markedRows(0), m_id3v1(id3v1), m_resizeTable(false), m_updateGenres(false)
 
752
        m_markedRows(0), m_changedFrames(0), m_id3v1(id3v1), m_resizeTable(false),
 
753
        m_updateGenres(false)
691
754
{
692
755
        setNumCols(CI_NumColumns);
693
756
        setSelectionMode(NoSelection);
699
762
        if (id3v1) {
700
763
                setMinimumHeight((Frame::FT_LastV1Frame + 1) * (rowHeight(0) + 1));
701
764
        }
702
 
        setItem(0, CI_Enable, new QCheckTableItem(this, i18n("Track Number")));
 
765
        setItem(0, CI_Enable, new NameTableItem(this, i18n("Track Number") + "WW"));
703
766
        adjustColumn(CI_Enable);
704
767
        setColumnStretchable(CI_Value, true);
705
768
        removeRow(0);
762
825
                        setItem(row, CI_Enable, twi);
763
826
                }
764
827
                twi->setCheckState(m_setCheckBoxes ? Qt::Checked : Qt::Unchecked);
 
828
                bool frameChanged = 
 
829
                        (static_cast<unsigned>((*it).getType()) < sizeof(m_changedFrames) * 8 &&
 
830
                         (m_changedFrames & (1 << (*it).getType())) != 0);
 
831
#if QT_VERSION >= 0x040200
 
832
                twi->setBackground(frameChanged ? QApplication::palette().mid() : Qt::NoBrush);
 
833
#elif QT_VERSION >= 0x040000
 
834
                twi->setBackgroundColor(frameChanged ?
 
835
                                                                                                                QApplication::palette().mid().color() :
 
836
                                                                                                                QApplication::palette().base().color());
 
837
#endif
765
838
 
766
839
                int type;
767
840
                if (m_id3v1) {
812
885
        setNumRows(m_frames.size());
813
886
        int row = 0;
814
887
        QTableItem* ti;
815
 
        QCheckTableItem* cti;
 
888
        NameTableItem* nti;
816
889
        for (FrameCollection::const_iterator it = m_frames.begin();
817
890
                         it != m_frames.end();
818
891
                         ++it) {
819
892
                if ((ti = item(row, CI_Enable)) != 0 &&
820
 
                                (cti = dynamic_cast<QCheckTableItem*>(ti)) != 0) {
 
893
                                (nti = dynamic_cast<NameTableItem*>(ti)) != 0) {
821
894
                        ti->setText(getDisplayName((*it).getName()));
822
895
                } else {
823
 
                        cti = new QCheckTableItem(this, getDisplayName((*it).getName()));
824
 
                        setItem(row, CI_Enable, cti);
 
896
                        nti = new NameTableItem(this, getDisplayName((*it).getName()));
 
897
                        setItem(row, CI_Enable, nti);
825
898
                }
826
 
                if (cti) {
827
 
                        cti->setChecked(m_setCheckBoxes);
 
899
                if (nti) {
 
900
                        nti->setChecked(m_setCheckBoxes);
 
901
                        nti->setBackgroundColored(
 
902
                                static_cast<unsigned>((*it).getType()) < sizeof(m_changedFrames) * 8 &&
 
903
                                (m_changedFrames & (1 << (*it).getType())) != 0);
828
904
                }
829
905
 
830
906
                int type;