| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 
 | /*
    This file is part of Akregator.
    Copyright (C) 2008 Frank Osterfeld <osterfeld@kde.org>
    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.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    As a special exception, permission is given to link this program
    with any edition of Qt, and distribute the resulting executable,
    without including the source code for Qt in the source distribution.
*/
#include "createfoldercommand.h"
#include "folder.h"
#include "subscriptionlistview.h"
#include <KInputDialog>
#include <KLocalizedString>
#include <QTimer>
#include <cassert>
using namespace Akregator;
class CreateFolderCommand::Private
{
    CreateFolderCommand* const q;
public:
    explicit Private( CreateFolderCommand* qq );
    
    void doCreate();
    
    TreeNode* m_selectedSubscription;
    Folder* m_rootFolder;
    SubscriptionListView* m_subscriptionListView;
};
CreateFolderCommand::Private::Private( CreateFolderCommand* qq ) 
  : q( qq ),
    m_selectedSubscription( 0 ), 
    m_rootFolder( 0 ),
    m_subscriptionListView( 0 )
{
    
}
void CreateFolderCommand::Private::doCreate()
{
    assert( m_rootFolder );
    assert( m_subscriptionListView );
    bool ok;
    const QString name = KInputDialog::getText( i18n( "Add Folder" ), 
                                                i18n( "Folder name:" ), 
                                                QString(), 
                                                &ok,
                                                q->parentWidget() );
    if ( !ok )
    {
        q->done();
        return;
    }
    Folder* parentFolder = qobject_cast<Folder*>( m_selectedSubscription ); 
    if ( !parentFolder )
        parentFolder = m_selectedSubscription ? m_selectedSubscription->parent() : 0;
    if ( !parentFolder )
        parentFolder = m_rootFolder;
        
    TreeNode* const after = ( m_selectedSubscription && m_selectedSubscription->isGroup() ) ? m_selectedSubscription : 0;
    Folder* const newFolder = new Folder( name );
    parentFolder->insertChild( newFolder, after );
    m_subscriptionListView->ensureNodeVisible( newFolder );
    q->done();
}
CreateFolderCommand::CreateFolderCommand( QObject* parent ) : Command( parent ), d( new Private( this ) )
{
    
}
CreateFolderCommand::~CreateFolderCommand()
{
    delete d;
}
void CreateFolderCommand::setSubscriptionListView( SubscriptionListView* view )
{
    d->m_subscriptionListView = view;
}
void CreateFolderCommand::setSelectedSubscription( TreeNode* selected )
{
    d->m_selectedSubscription = selected;
}
void CreateFolderCommand::setRootFolder( Folder* rootFolder )
{
    d->m_rootFolder = rootFolder;
}
void CreateFolderCommand::doStart()
{
    QTimer::singleShot( 0, this, SLOT(doCreate()) );
}
void CreateFolderCommand::doAbort()
{
    
}
#include "moc_createfoldercommand.cpp"
 |