Ignore:
Timestamp:
Mar 16, 2012, 4:02:47 PM (13 years ago)
Author:
Silvan Scherrer
Message:

SMPlayer: 0.7.1 trunk update

Location:
smplayer/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • smplayer/trunk

  • smplayer/trunk/src/favoriteeditor.cpp

    r119 r124  
    11/*  smplayer, GUI front-end for mplayer.
    2     Copyright (C) 2006-2011 Ricardo Villalba <rvm@escomposlinux.org>
     2    Copyright (C) 2006-2012 Ricardo Villalba <rvm@users.sourceforge.net>
    33
    44    This program is free software; you can redistribute it and/or modify
     
    2222#include <QHeaderView>
    2323#include <QFileDialog>
     24#include <QItemDelegate>
     25#include "filechooser.h"
    2426
    2527#define COL_ICON 0
    2628#define COL_NAME 1
    2729#define COL_FILE 2
     30
     31#include <QItemDelegate>
     32
     33class FEDelegate : public QItemDelegate
     34{
     35public:
     36        FEDelegate(QObject *parent = 0);
     37
     38        QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
     39                           const QModelIndex &index) const;
     40        virtual void setModelData(QWidget * editor, QAbstractItemModel * model,
     41                              const QModelIndex & index ) const;
     42};
     43
     44FEDelegate::FEDelegate(QObject *parent) : QItemDelegate(parent) {
     45}
     46
     47QWidget * FEDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem & option, const QModelIndex & index) const {
     48        //qDebug("FEDelegate::createEditor");
     49
     50        if (index.column() == COL_FILE) {
     51                FileChooser * fch = new FileChooser(parent);
     52                fch->setOptions(QFileDialog::DontUseNativeDialog | QFileDialog::DontResolveSymlinks); // Crashes if use the KDE dialog
     53                fch->setText( index.model()->data(index, Qt::DisplayRole).toString() );
     54                return fch;
     55        }
     56        else
     57        if (index.column() == COL_NAME) {
     58                QLineEdit * e = new QLineEdit(parent);
     59                e->setText( index.model()->data(index, Qt::DisplayRole).toString() );
     60                return e;
     61        }
     62        else {
     63                return QItemDelegate::createEditor(parent, option, index);
     64        }
     65}
     66
     67void FEDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const {
     68        if (index.column() == COL_FILE) {
     69                FileChooser * fch = static_cast<FileChooser*>(editor);
     70                model->setData(index, fch->text() );
     71        }
     72        else
     73        if (index.column() == COL_NAME) {
     74                QLineEdit * e = static_cast<QLineEdit*>(editor);
     75                model->setData(index, e->text() );
     76        }
     77}
     78
     79QString FavoriteEditor::last_dir;
    2880
    2981FavoriteEditor::FavoriteEditor( QWidget* parent, Qt::WindowFlags f )
     
    3284        setupUi(this);
    3385
     86        add_button->setIcon( Images::icon("bookmark_add") );
     87        add_submenu_button->setIcon( Images::icon("bookmark_folder") );
     88        delete_button->setIcon( Images::icon("delete") );
     89        delete_all_button->setIcon( Images::icon("trash") );
     90        up_button->setIcon( Images::icon("up") );
     91        down_button->setIcon( Images::icon("down") );
     92
    3493        table->setColumnCount(3);
    3594        table->setHorizontalHeaderLabels(QStringList() << tr("Icon") << tr("Name") << tr("Media") );
     
    4099        table->setSelectionBehavior(QAbstractItemView::SelectRows);
    41100        table->setSelectionMode(QAbstractItemView::ExtendedSelection);
     101
     102        table->setItemDelegateForColumn( COL_NAME, new FEDelegate(table) );
     103        table->setItemDelegateForColumn( COL_FILE, new FEDelegate(table) );
    42104
    43105        connect(table, SIGNAL(cellActivated(int,int)), this, SLOT(edit_icon(int,int)));
     
    92154                icon_item->setIcon( QIcon(list[n].icon()) );
    93155                icon_item->setData( Qt::UserRole, list[n].icon() );
     156                icon_item->setData( Qt::ToolTipRole, list[n].icon() );
    94157                icon_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
    95158
     
    98161
    99162                QTableWidgetItem * file_item = new QTableWidgetItem;
    100                 file_item->setText( list[n].file() );
     163                file_item->setData( Qt::ToolTipRole, list[n].file() );
     164                file_item->setData( Qt::UserRole, list[n].isSubentry() );
     165                if (list[n].isSubentry()) {
     166                        file_item->setFlags(Qt::ItemIsSelectable);
     167                        file_item->setData( Qt::UserRole + 1, list[n].file() );
     168                        file_item->setText( tr("Favorite list") );
     169                } else {
     170                        file_item->setText( list[n].file() );
     171                }
    101172
    102173                table->setItem(n, COL_ICON, icon_item);
     
    105176        }
    106177
    107         table->setCurrentCell(0, 0);
     178        //table->resizeColumnsToContents();
     179
     180        //table->setCurrentCell(0, 0);
     181        table->setCurrentCell(table->rowCount()-1, 0);
    108182}
    109183
     
    114188                Favorite f;
    115189                f.setName( table->item(n, COL_NAME)->text() );
    116                 f.setFile( table->item(n, COL_FILE)->text() );
    117190                f.setIcon( table->item(n, COL_ICON)->data(Qt::UserRole).toString() );
     191                f.setSubentry( table->item(n, COL_FILE)->data(Qt::UserRole).toBool() );
     192                if (f.isSubentry()) {
     193                        f.setFile( table->item(n, COL_FILE)->data(Qt::UserRole + 1).toString() );
     194                } else {
     195                        f.setFile( table->item(n, COL_FILE)->text() );
     196                }
    118197
    119198                list.append(f);
     
    150229        table->setItem(row, COL_NAME, new QTableWidgetItem);
    151230        table->setItem(row, COL_FILE, new QTableWidgetItem);
     231
     232        table->setCurrentCell(row, table->currentColumn());
     233}
     234
     235void FavoriteEditor::on_add_submenu_button_clicked() {
     236        qDebug("FavoriteEditor::on_add_submenu_button_clicked");
     237        qDebug("FavoriteEditor::on_add_submenu_button_clicked: store_path: '%s'", store_path.toUtf8().constData());
     238
     239        QString filename;
     240        //QString s;
     241        int n = 1;
     242        do {
     243                filename = QString("favorites%1.m3u8").arg(n, 4, 10, QChar('0'));
     244                if (!store_path.isEmpty()) filename = store_path +"/"+ filename;
     245                qDebug("FavoriteEditor::on_add_submenu_button_clicked: filename: '%s'", filename.toUtf8().constData());
     246                n++;
     247        } while (QFile::exists(filename));
     248
     249        qDebug("FavoriteEditor::on_add_submenu_button_clicked: choosen filename: '%s'", filename.toUtf8().constData());
     250
     251
     252        int row = table->currentRow();
     253        row++;
     254        table->insertRow(row);
     255
     256        QTableWidgetItem * icon_item = new QTableWidgetItem;
     257        icon_item->setData( Qt::UserRole, Images::file("openfolder.png") );
     258        icon_item->setIcon( Images::icon("openfolder") );
     259        icon_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
     260
     261        table->setItem(row, COL_ICON, icon_item);
     262        table->setItem(row, COL_NAME, new QTableWidgetItem);
     263
     264        QTableWidgetItem * file_item = new QTableWidgetItem;
     265        file_item->setData( Qt::UserRole, true );
     266        file_item->setFlags(Qt::ItemIsSelectable);
     267        file_item->setData( Qt::UserRole + 1, filename );
     268        file_item->setText( tr("Favorite list") );
     269        file_item->setData( Qt::ToolTipRole, filename );
     270        table->setItem(row, COL_FILE, file_item);
    152271
    153272        table->setCurrentCell(row, table->currentColumn());
Note: See TracChangeset for help on using the changeset viewer.