videocollection/videocollectionview/inc/videolistselectiondialog.h
author hgs
Thu, 01 Apr 2010 22:38:49 +0300
changeset 30 4f111d64a341
child 34 bbb98528c666
permissions -rw-r--r--
201005
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   Videolist selection dialog 
hgs
parents:
diff changeset
    15
* 
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef VIDEOLISTSELECTIONDIALOG_H
hgs
parents:
diff changeset
    19
#define VIDEOLISTSELECTIONDIALOG_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <hbdialog.h>
hgs
parents:
diff changeset
    22
#include <qlist.h>
hgs
parents:
diff changeset
    23
#include <qitemselectionmodel.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
class QGraphicItem;
hgs
parents:
diff changeset
    26
class QItemSelection;
hgs
parents:
diff changeset
    27
class HbLabel;
hgs
parents:
diff changeset
    28
class HbCheckBox;
hgs
parents:
diff changeset
    29
class HbStackedWidget;
hgs
parents:
diff changeset
    30
class VideoListWidget;
hgs
parents:
diff changeset
    31
class VideoCollectionUiLoader;
hgs
parents:
diff changeset
    32
class VideoSortFilterProxyModel;
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
class VideoListSelectionDialog: public HbDialog
hgs
parents:
diff changeset
    35
{     
hgs
parents:
diff changeset
    36
    /**
hgs
parents:
diff changeset
    37
     * definition required for emitting / connecting signals 
hgs
parents:
diff changeset
    38
     */
hgs
parents:
diff changeset
    39
    Q_OBJECT
hgs
parents:
diff changeset
    40
    
hgs
parents:
diff changeset
    41
    /**
hgs
parents:
diff changeset
    42
     * disable copy-constructor and assignment operator
hgs
parents:
diff changeset
    43
     */
hgs
parents:
diff changeset
    44
    Q_DISABLE_COPY(VideoListSelectionDialog) 
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
    
hgs
parents:
diff changeset
    47
public: 
hgs
parents:
diff changeset
    48
    
hgs
parents:
diff changeset
    49
    /**
hgs
parents:
diff changeset
    50
     * Constructor
hgs
parents:
diff changeset
    51
     *
hgs
parents:
diff changeset
    52
     * @param uiLoader used to load UI components from docml
hgs
parents:
diff changeset
    53
     * @param parent item's parent component
hgs
parents:
diff changeset
    54
     */
hgs
parents:
diff changeset
    55
    VideoListSelectionDialog(VideoCollectionUiLoader *uiLoader, QGraphicsItem *parent=0);
hgs
parents:
diff changeset
    56
    
hgs
parents:
diff changeset
    57
    /**
hgs
parents:
diff changeset
    58
     * Destructor
hgs
parents:
diff changeset
    59
     */
hgs
parents:
diff changeset
    60
    ~VideoListSelectionDialog();
hgs
parents:
diff changeset
    61
   
hgs
parents:
diff changeset
    62
    /**
hgs
parents:
diff changeset
    63
     * Method setups provided title and videolist content widget.
hgs
parents:
diff changeset
    64
     * Prepares dialog for showing.
hgs
parents:
diff changeset
    65
     * If either provided title is empty or widget is NULL, dialog
hgs
parents:
diff changeset
    66
     * is in invalid state and cannot be shown using exec.
hgs
parents:
diff changeset
    67
     *
hgs
parents:
diff changeset
    68
     * @param title title of the dialog
hgs
parents:
diff changeset
    69
     * @param videoList videolist widget.
hgs
parents:
diff changeset
    70
     */
hgs
parents:
diff changeset
    71
    void setContent(const QString &title, VideoListWidget *videoList);
hgs
parents:
diff changeset
    72
    
hgs
parents:
diff changeset
    73
    /**
hgs
parents:
diff changeset
    74
     * Returns selection (mSelection). Selection will be empty in case
hgs
parents:
diff changeset
    75
     * dialog is closed using cancell button,
hgs
parents:
diff changeset
    76
     *
hgs
parents:
diff changeset
    77
     * @return HbAction primary action if "OK" iis pressed
hgs
parents:
diff changeset
    78
     */
hgs
parents:
diff changeset
    79
    const QItemSelection& getSelection() const;
hgs
parents:
diff changeset
    80
      
hgs
parents:
diff changeset
    81
public slots:
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
    /**
hgs
parents:
diff changeset
    84
     * Shows modal dialog build from the provided Videolistwidget.
hgs
parents:
diff changeset
    85
     *
hgs
parents:
diff changeset
    86
     * @return HbAction primary action if "OK" iis pressed
hgs
parents:
diff changeset
    87
     */
hgs
parents:
diff changeset
    88
    HbAction* exec();
hgs
parents:
diff changeset
    89
    
hgs
parents:
diff changeset
    90
private slots:
hgs
parents:
diff changeset
    91
    
hgs
parents:
diff changeset
    92
    /**
hgs
parents:
diff changeset
    93
     * Slot connected to mCheckBox's stateChanged -signal. 
hgs
parents:
diff changeset
    94
     * Selects or deselects all items if mForcedCheck -flag is false.
hgs
parents:
diff changeset
    95
     * 
hgs
parents:
diff changeset
    96
     * If Forcedcehck is true, it indeicates that we want to change the checked state
hgs
parents:
diff changeset
    97
     * only, not slect or deselect anything. This is needed for example if after 
hgs
parents:
diff changeset
    98
     * all items are marked, user manually deselects item's. In that case all is not
hgs
parents:
diff changeset
    99
     * marked, so checked state needs to be changed. 
hgs
parents:
diff changeset
   100
     *
hgs
parents:
diff changeset
   101
     * @param state Qt::Checked everything should be set as selected.
hgs
parents:
diff changeset
   102
     */
hgs
parents:
diff changeset
   103
    void markAllStateChangedSlot(int state);
hgs
parents:
diff changeset
   104
    
hgs
parents:
diff changeset
   105
    /**
hgs
parents:
diff changeset
   106
     * disables or enables popup's primary action in case selection changes
hgs
parents:
diff changeset
   107
     *
hgs
parents:
diff changeset
   108
     * @param selected item selection list containing selected
hgs
parents:
diff changeset
   109
     * @param deselected item selection list containing  not selected (not used in this scope)
hgs
parents:
diff changeset
   110
     */
hgs
parents:
diff changeset
   111
    void selectionChangedSlot(const QItemSelection &selected, const QItemSelection &deselected); 
hgs
parents:
diff changeset
   112
    
hgs
parents:
diff changeset
   113
    /**
hgs
parents:
diff changeset
   114
     * Changes the counter value. Sets the checkbutton state based on selection count.
hgs
parents:
diff changeset
   115
     *
hgs
parents:
diff changeset
   116
     */
hgs
parents:
diff changeset
   117
    void updateCounterSlot();
hgs
parents:
diff changeset
   118
    
hgs
parents:
diff changeset
   119
private:
hgs
parents:
diff changeset
   120
    
hgs
parents:
diff changeset
   121
    /**
hgs
parents:
diff changeset
   122
     * connects all required signals into appropriate slots 
hgs
parents:
diff changeset
   123
     * for selection mode
hgs
parents:
diff changeset
   124
     */
hgs
parents:
diff changeset
   125
    void connectSignals();
hgs
parents:
diff changeset
   126
    
hgs
parents:
diff changeset
   127
    /**
hgs
parents:
diff changeset
   128
     * disconnects all signals 
hgs
parents:
diff changeset
   129
     */
hgs
parents:
diff changeset
   130
    void disconnectSignals();
hgs
parents:
diff changeset
   131
    
hgs
parents:
diff changeset
   132
private:    
hgs
parents:
diff changeset
   133
   
hgs
parents:
diff changeset
   134
    /**
hgs
parents:
diff changeset
   135
     * docml UI loader, not owned
hgs
parents:
diff changeset
   136
     */
hgs
parents:
diff changeset
   137
    VideoCollectionUiLoader *mUiLoader;
hgs
parents:
diff changeset
   138
        
hgs
parents:
diff changeset
   139
    /**
hgs
parents:
diff changeset
   140
     * content videolist, not owned
hgs
parents:
diff changeset
   141
     */
hgs
parents:
diff changeset
   142
    VideoListWidget *mVideoList;
hgs
parents:
diff changeset
   143
    
hgs
parents:
diff changeset
   144
    /**
hgs
parents:
diff changeset
   145
     * Selection 
hgs
parents:
diff changeset
   146
     */
hgs
parents:
diff changeset
   147
    QItemSelection mSelection;
hgs
parents:
diff changeset
   148
    
hgs
parents:
diff changeset
   149
    /**
hgs
parents:
diff changeset
   150
     * header label
hgs
parents:
diff changeset
   151
     */
hgs
parents:
diff changeset
   152
    HbLabel *mHeading;
hgs
parents:
diff changeset
   153
    
hgs
parents:
diff changeset
   154
    /**
hgs
parents:
diff changeset
   155
     * counter label from docml
hgs
parents:
diff changeset
   156
     */
hgs
parents:
diff changeset
   157
    HbLabel *mItemCount;
hgs
parents:
diff changeset
   158
    
hgs
parents:
diff changeset
   159
    /**
hgs
parents:
diff changeset
   160
     * mark all checkbox
hgs
parents:
diff changeset
   161
     */
hgs
parents:
diff changeset
   162
    HbCheckBox *mCheckBox;
hgs
parents:
diff changeset
   163
    
hgs
parents:
diff changeset
   164
    /**
hgs
parents:
diff changeset
   165
     * videolist container in dialog
hgs
parents:
diff changeset
   166
     */
hgs
parents:
diff changeset
   167
    HbStackedWidget *mListContainer;
hgs
parents:
diff changeset
   168
    
hgs
parents:
diff changeset
   169
    /**
hgs
parents:
diff changeset
   170
     * flag indicating that we've changed check-btn state 
hgs
parents:
diff changeset
   171
     * explicitly and don't wanna handle selection based on that 
hgs
parents:
diff changeset
   172
     */
hgs
parents:
diff changeset
   173
    bool mForcedCheck;
hgs
parents:
diff changeset
   174
    
hgs
parents:
diff changeset
   175
};
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
#endif  //VIDEOLISTSELECTIONDIALOG_H