logsui/logsapp/inc/logsrecentcallsview.h
author hgs
Fri, 15 Oct 2010 14:47:48 +0300
changeset 21 2f0af9ba7665
parent 17 90fe74753f71
permissions -rw-r--r--
201041

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
#ifndef LOGSRECENTCALLSVIEW_H
#define LOGSRECENTCALLSVIEW_H

#include "logsfilter.h"
#include "logsbaseview.h"
#include <hbscrollarea.h>
#include <QGesture>

class HbListView;
class HbLabel;
class LogsComponentRepository;
class LogsModel;
class HbAbstractViewItem;
class LogsAbstractViewManager;
class LogsEffectHandler;
class HbGroupBox;
class LogsMatchesModel;
class LogsPageIndicator;


/**
 * 
 */
class LogsRecentCallsView : public LogsBaseView
{
    Q_OBJECT
    friend class UT_LogsRecentCallsView;
    friend class UT_LogsViewManager;
    
public:
    explicit LogsRecentCallsView( LogsComponentRepository& repository,
                                  LogsAbstractViewManager& viewManager );
    ~LogsRecentCallsView();

public: // From LogsBaseView
    
    virtual void activated(bool showDialer, QVariant args, const QString& dialpadText);
    virtual void deactivated();
    virtual bool isExitAllowed();
    virtual QString saveActivity(QDataStream& serializedActivity, QVariantHash& metaData);
    virtual QVariant loadActivity(
        const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData);
    
public slots:
    
    void handleExit();
    void markingCompleted(int err);
    
protected slots: // from LogsBaseView 
    
    virtual void handleBackSoftkey();
    void openDialpad();
    virtual void dialpadEditorTextChanged();
    virtual void updateEmptyListWidgetsVisibility();
    virtual void updateWidgetsSizeAndLayout();
    virtual void updateEmptyListLabelVisibility();    
    virtual void handleViewSwitchSelected(HbListWidgetItem* item);
    
private slots:

    void clearList();
    void clearListAnswer(int action);
    void toggleContactSearch();
    void updateView(XQService::LogsViewIndex view);
    void moveForwardInLists();
    void moveBackwardInLists();
    void dissappearByFadingComplete();
    void dissappearByMovingComplete();
    void appearStarting();
    void appearByMovingComplete();
    bool markMissedCallsSeen();
    
private: // from LogsBaseView
        
    virtual void initView();
    virtual QAbstractItemModel* model() const;
    virtual LogsAbstractModel* logsModel() const;
    virtual HbListView* listView() const;
    virtual void updateCallButton();
    
private:
    
    void addStringsToMap();
    void initListWidget();
    void updateFilter(LogsFilter::FilterType type);
    void updateViewName();
    void updateViewSwitchList(XQService::LogsViewIndex view);
    
    LogsFilter::FilterType getFilter(XQService::LogsViewIndex view);  
    void changeView(XQService::LogsViewIndex view);
    void updateMenu();
    void handleMissedCallsMarking();
    void handleMissedCallsCounter();
    
    //from HbWidget
    void gestureEvent(QGestureEvent *event);    
    
    int getListItemTextWidth();
    bool decideListMoveDirection(
        QSwipeGesture::SwipeDirection direction);
    bool moveToLeft(bool toLeft) const;
    
private:
    
    HbGroupBox* mViewName;   //not owned
    HbListView* mListView;//not owned
    LogsFilter* mFilter;  //owned
    
    QMap<LogsBaseView::LogsViewMap, QString>   mTitleMap;
    QMap<XQService::LogsViewIndex, LogsBaseView::LogsViewMap>   mConversionMap;	
    
    LogsModel* mModel;

    XQService::LogsViewIndex mCurrentView;
    XQService::LogsViewIndex mAppearingView;
    bool mMoveLeftInList;
    LogsEffectHandler* mEffectHandler;
    int mListViewX;
    int mEmptyListLabelX;
    LogsMatchesModel* mMatchesModel; 
    bool mMarkingMissedAsSeen;
    LogsPageIndicator* mPageIndicator;
    
    HbScrollArea::ScrollBarPolicy mListScrollBarPolicy;
    bool mEffectInDissappearedPhase;
};

#endif // LOGSRECENTCALLSVIEW_H